Python web для начинающих приложение с бд. Сравнение веб-серверов приложений на основе Python

Проще всего создать динамические страницы на Python при помощи CGI-скриптов. CGI-скрипты - это исполняемые файлы, которые выполняются веб-сервером, когда в URL запрашивается соответствующий скрипт.

Сегодня я расскажу про то, как написать Hello world, как CGI-скрипт.

Настройка локального сервера

В Python уже есть встроенный CGI сервер, поэтому его настройка элементарна.

Для запуска из консоли (для любителей linux-систем). Запускать нужно из той папки, где мы хотим работать:

Python3 -m http.server --cgi

Для сидящих на Windows чуть проще будет запуск Python файла (заметьте, что он должен находиться в той же папке, в которой мы планируем работать! ):

from http.server import HTTPServer , CGIHTTPRequestHandler server_address = ("" , 8000 ) httpd = HTTPServer (server_address , CGIHTTPRequestHandler ) httpd . serve_forever ()

Теперь откройте браузер и в адресной строке наберите localhost:8000

Если у вас примерно такая же картина, значит, у вас все заработало!

Hello world

Теперь в той папке, где мы запустили сервер, создаём папку cgi-bin (у меня она уже создана).

В этой папке создаём скрипт hello.py со следующим содержимым:

#!/usr/bin/env python3 print ("Content-type: text/html" ) print () print ("

Hello world!

" )

Первая строка говорит о том, что это Python скрипт (CGI-скрипты можно не только на Python писать).

Вторая строка печатает заголовок. Он обозначает, что это будет html файл (бывает ещё css, javascript, pdf и куча других, и браузер различает их по заголовкам).

Третья строка (просто символ новой строки) отделяет заголовки от тела ответа.

Четвёртая печатает Hello world.

Теперь переходим на localhost:8000/cgi-bin/hello.py

И радуемся!

Если у вас не работает, проверьте, установлены ли права на выполнение.

Также в консоли запущенного сервера появляются сообщения об ошибках. Например, убрал скобочку и обновил страницу:

В следующей части мы рассмотрим обработку данных форм и cookies.

Я занимаюсь некоторой работой на python, но это все для автономных приложений. Мне любопытно узнать, поддерживает ли какое-либо ответвление python в веб-разработке?

Будет ли кто-то также предлагать хороший учебник или веб-сайт, откуда я могу забрать некоторые основы веб-разработки с помощью python?

9 Solutions collect form web for “Использование python для разработки веб-приложения”

Теперь, когда все сказали Django , я могу добавить свои два цента: я бы сказал, что вы можете узнать больше, сначала посмотрев на разные компоненты, прежде чем использовать Django. Для веб-разработки с Python вам часто нужны 3 компонента:

    Что-то, что заботится о HTTP-материале (например, CherryPy)

    Язык шаблонов для создания ваших веб-страниц. Мако очень pythonic и работает с Cherrpy.

    Если вы получаете данные из базы данных, ORM пригодится. Пример SQLAlchemy .

Все ссылки выше имеют хорошие учебные пособия. Для многих случаев использования в реальном времени Django будет лучшим решением, чем такой стек, поскольку он легко интегрирует эту функциональность (и многое другое). И если вам нужна CMS, Django – ваш лучший выбор, кроме Zope. Тем не менее, чтобы получить хорошее представление о том, что происходит, может быть лучше стека слабо связанных программ. Джанго скрывает много деталей.

Отредактировано 3 года спустя : Не используйте mod_python, используйте mod_wsgi. Flask и Werkzeug – хорошие рамки. Нужно знать, что происходит, полезно, но это не требование. Это было бы глупо.

Не просматривайте Django, пока вы не поймете, что Django делает от вашего имени. для тебя. Напишите некоторые базовые приложения, используя mod_python и объект запроса. Я только начал изучать Python для веб-разработки с помощью mod_python, и это было здорово.

mod_python также использует диспетчер в site-packages / mod_python / publisher.py. У вас есть ganders, чтобы увидеть, как запросы могут обрабатываться простым способом.

Возможно, вам потребуется добавить немного конфига в конфигурационный файл Apache, чтобы получить mod_python и запустить его, но сайт mod_python объясняет это хорошо.

AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On

И ты далеко!

использовать (как тупо базовый пример):

Def foo(req): req.write("Hello World")

в /path/to/python/files/bar.py предполагается, что /path/to является вашим корнем сайта.

И тогда вы можете сделать

Http://www.mysite.com/python/files/bar/foo

увидеть «Hello World». Кроме того, что-то, что меня сбило с толку, – это диспетчер, использующий хромовый метод для разработки типа контента, поэтому для принудительного использования HTML:

Req.content_type = "text/html"

Удачи

После того, как вы хорошо поймете, как Python взаимодействует с mod_python и Apache, используйте фреймворк, который делает для вас все скучные вещи. До вас, хотя, только моя рекомендация

Если вы действительно не хотите вникать в рамки – и вы должны, я от всей души рекомендую Django или Pylons – по-прежнему нужно идти по дороге CGI. Это совершенно устаревшая технология, не говоря уже о медленных и неэффективных.

Существует стандартный способ создания веб-приложений Python, и он называется WSGI . Если вы хотите свернуть свое собственное веб-приложение с нуля, это абсолютно путь.

Тем не менее, если вы только начинаете, действительно вам стоит пойти с одной из фреймворков.

Python Wiki: веб-фреймворки для Python

Если вы решите использовать Django , официальный учебник станет отличным местом для начала. Книга Джанго также бесплатна.

Есть несколько вариантов для веб-разработки. По моему опыту, ваш выбор снова будет зависеть от вашего приложения. Я использовал django и web.py в производстве, и я собираюсь развернуть приложение на основе пилонов.

Django скрывает множество вариантов (поставляется с ORM и шаблонами). Документация обширна и хорошо написана. Для django доступно много многоразовых приложений, но вы, вероятно, потратите немного времени на их интеграцию. Одна вещь, упомянутая на djangocon 08, заключалась в том, что в джанго есть классные вещи, к которым нельзя легко получить доступ в проектах, не связанных с джанго.

web.py впечатлил меня своей простой простотой. Прежде чем я это узнал, я написал небольшое приложение (78 строк квази-вики).

пилоны чувствуют себя как в середине обоих. Я могу использовать sqlalchemy и jinja , и все это приятный опыт для начала.

Поиск Django.

Python может использоваться для веб-разработки, но не существует специального языкового расширения или чего-либо еще на языке, который будет обрабатывать все поколения HTML или работает как PHP.

В значительной степени он запускается через какой-то интерпретатор на веб-сервере (CGI, mod_python и т. Д.).

Существует много веб-фреймворков для python, но единственное, что я использовал, это Django , и мне это очень нравится.

Если у вас есть несколько часов, сделайте учебник, я обещаю вам, вам понравится 🙂

Как отмечали другие, одним из наиболее заметных «ответвлений» питона, как вы их называете, будет Django . Это довольно мощная структура, которая позволяет быстро и надежно создавать веб-приложения. Первое, что нужно посмотреть, это их обзор, который дает некоторое представление о том, что Django делает в качестве основы.

Пройдя через их учебник, я много рассказывал об известном шаблоне проектирования Model-View-Controler и о том, как он может использоваться в контексте веб-разработки. Я нашел отличный способ начать писать приложение, которое работало и училось, улучшив его.

В статье хотелось бы поднять вопросы отличия использования Python для web-зазработки по сравнению с оной на PHP. Надеюсь, статья не приведет к холиварам, так как она вовсе не о том, какой язык лучше или хуже, а исключительно о технических особенностях Python.

Немного о самих языках

PHP - веб-ориентированный язык, создан, чтобы умирать . С низкоуровневой точки зрения приложение на PHP представляет собой скорее набор отдельных скриптов возможно с единой семантической точкой входа.

Python - унивресальный язык программирования, применимый в том числе и в вебе. С технической точки зрения web-приложение на Python - полноценное приложение, загруженное в память, обладающее своим внутренним состоянием, сохраняемым от запроса к запросу.

Исходя из вышеописанных особенностей вытекают и различия в обработке ошибок в web-приложениях. В PHP существует целый зоопарк типов ошибок (errors, exceptions), далеко не каждую из которых можно перехватить, хотя это (невозможность перехвата) и не имеет большого значения, так как приложение живет ровно столько, сколько обрабатывается один запрос. Неперехваченная ошибка просто приводит к досрочному выходу из обработчика, и удалению приложения из памяти. Новый запрос будет обрабатываться новым «чистым» приложением. В Python же приложение постоянно находится в памяти, обрабатывая множество запросов без «перезагрузки». Таким образом поддерживать правильное предсказуемое состояние приложения крайне важно. Все ошибки используют стандартный механизм исключений и могут быть перехвачены (разве что за исключением SyntaxError). Неперехваченная ошибка приведет к завершению приложения, которое понадобится перезапускать извне.

Существует множество способов «приготовить» PHP и Python для веба. Далее я остановлюсь на двух наиболее мне знакомых (и кажется наиболее популярных) - PHP + FastCGI (php-fpm) и Python + WSGI (uWSGI). Конечно же, перед обоими этими связками предполагается наличие фронтенд-сервера (например, Nginx).

Поддержка многопоточности Python

Запуск сервера приложений (например, uWSGI) приводит к загрузке интерпретатора Python в память, а затем загрузке самого web-приложения. Обычно bootstrap-модуль приложения импортирует необходимые ему модули, производит вызовы инициализации и в итоге экспортирует подготовленный callable объект, соответствующий спецификации WSGI. Как известно, при первом импорте Python-модулей, код внутри них исполняется, в том числе создаются и инициализируются значениями переменные. Между двумя последовательными HTTP-запросами состояние интерпретатора не сбрасывается, следовательно сохраняются значения всех переменных уровня модуля.

Напишем простейшее WSGI-приложение, которое наглядно продемонстрирует вышеописанное на примере:

N = 0 def app(env, start_response): global n n += 1 response = "%.6d" % n start_response("200 OK", [("Content-Type", "text/plain")]) return

Здесь n является переменной модуля и она будет создана со значением 0 при загрузке приложения в память следующей командой:

Uwsgi --socket 127.0.0.1:8080 --protocol http --single-interpreter --processes 1 -w app:app

Само приложение просто выводит на страницу значение переменной n . Для заядлых PHP программистов оно выглядит бессмысленным, так как «должно» каждый раз выводить на страницу строку «000001».

Проведем тест:

Ab -n 500 -c 50 http://127.0.0.1:8080/ curl http://127.0.0.1:8080

В результате мы получим строку «000501» , что подтверждает наше утверждение, о том, что приложение находится загруженным в память uwsgi и сохраняет свое состояние между запросами.

Если запустить uWSGI с параметром --processes 2 и провести тот же тест, то несколько последовательных вызовов curl покажут, что мы имеем уже 2 различные возрастающие последовательности. Так как ab посылает 500 запросов, примерно половина из них приходится на один процесс uWSGI, а остальные - на второй. Ожидаемые значения, возращаемые curl будут примерно «000220» и «000280» . Интерпретатор Python, судя по всему, один на процесс, и мы имеем 2 независимых окружения и реальную параллельную обработку запросов (в случае многоядерного процессора).

Python поддерживает потоки, как часть языка. Классическая реализация (CPython) использует нативные потоки OS, но есть GIL - в один момент времени выполняется только один поток. При этом все равно возможны проблемы race condition, так как даже n += 1 не является атомарной операцией.

Дизассемблируем python код

«Дизассемблируем» наше WSGI-приложение: import dis n = 0 def app(env, start_response): global n n += 1 return if "__main__" == __name__: print(dis.dis(app)) 8 0 LOAD_GLOBAL 0 (n) 3 LOAD_CONST 1 (1) 6 INPLACE_ADD 7 STORE_GLOBAL 0 (n) 10 10 LOAD_GLOBAL 1 (bytes) 13 LOAD_GLOBAL 2 (str) 16 LOAD_GLOBAL 0 (n) 19 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 22 LOAD_CONST 2 ("utf-8") 25 CALL_FUNCTION 2 (2 positional, 0 keyword pair) 28 BUILD_LIST 1 31 RETURN_VALUE

Видно, что инкремент в нашей программе занимает 4 операции. Прерывание GIL может наступить на любой из них.

Увеличение количества потоков при отсуствии ожидания IO в коде обработчиков HTTP-запросов не приводит к ускорению обработки (а скорее даже ее замедляет, так как потоки могут «толкаться», переключая контексты). Реальной параллельности потоки в следствие ограничеия GIL не создают, хоть и являются не green thread"ами, а настоящими потоками OS.

Проведем еще один тест. Запустим uwsgi с 1 процессом, но 10 потоками-обработчиками в нем:

Uwsgi --socket 127.0.0.1:8080 --protocol http --single-interpreter --processes 1 --threads 10 -w app:app

Пускай это прозвучит немного пафосно, но мы живём в золотой век веб-разработки. Веб-технологии никогда не были такими изысканными и гибкими, как сегодня. Если вы хотите создать качественный веб-сайт или веб-приложение, вы без труда найдёте массу инструментов для реализации любых своих задумок. И один из них - Python.

Вопреки распространенному мнению, Python полезен не только для обработки данных и скриптов. Посмотрите на рейтинг портала HotFrameworks.com , и вы увидите, что пятый по популярности веб-фреймворк создан для работы с Python.

Python и веб-разработка

При разработке веб-приложения Python в основном используется для обработки бэк-энд и маршрутизации, где в роли конкурентов у него PHP и Ruby. Веб-страницы все равно необходимо отображать с использованием HTML и CSS, а функциональная часть фронтэнда по-прежнему выполняется на JavaScript. Если вам интересен этот язык, то рекомендуем начать его изучения с бесплатного .

В зависимости от того, какой фреймворк Python вы используете, взаимодействия могут существенно упрощаться. Например, Django имеет систему шаблонов для написания специальных HTML-файлов, которые могут вставлять код Python и взаимодействовать с данными из бэк-энда.

Такой тип взаимодействия называется full-stack фреймворком. С его помощью вы можете работать с системами, обрабатывающими HTTP-запросы, хранилищами баз данных, шаблонами веб-страниц, запросами маршрутизации и т. д. С другой стороны, есть и не full-stack фреймворки, которые также называют микрофреймворками, которые обрабатывают только базовую логику. А для сторонних работ они должны быть объединены со сторонними базами данных, шаблонизаторами и т. д.

В общем, full-stack фреймворки имеют более крутые кривые обучения и заставляют вас принимать множество решений относительно структуры, но предоставляют все, что вам нужно. Микрофреймворки могут быть изучены в кратчайшие сроки и являются более гибкими, но вам, скорее всего, каждый раз придётся изобретать велосипед.

Python против других языков

Если вы следите за текстами в нашем блоге, то уже имеете представление о популярных , например, React или Angular. Они стремительно развиваются, особенно среди новичков. Многие думают: «Если мне нужен JavaScript для внешнего интерфейса, почему бы не использовать JavaScript для back-end?» И это действительно имеет смысл. А взгляните на PHP - он существует уже много десятилетий, его окружает большое количество документации, он востребован. Тоже вполне себе логичный вариант для back-end.

Большинство актуальных задач веба вы можете решить с использованием любого языка. Единственное, что действительно важно - это то, насколько удобно вам лично его использовать. Если язык вам не подходит, вы просто изучите другой и продолжите своё дело.

Но отказаться от Python вам будет очень непросто, ведь для любви к нему есть минимум .

Python и фреймворки

Чтобы заняться веб-разработкой с использованием Python, вам следует серьезно рассмотреть возможность использования одного из следующих фреймворков. Каждый из них по-своему хорош, проверен временем и тысячами программистов. Поэтому будьте уверены, что существенных проблем с официальной поддержкой, сообществами или документацией не возникнет.

Django - пожалуй, самый известный и популярный фреймворк для веб-разработки с использованием Python. Он поставляется с десятками встроенных модулей, прекрасно собранных и безупречно взаимодействующих друг с другом. Сначала вам потребуется немного времени, чтобы понять алгоритм создания веб-приложений, освоить внутренние структуры на Django. Но как только вы поймёте что к чему, быстрая разработка не станет проблемой. И да, если вы хотите работать веб-разработчиком на Python, знание Django - часто единственный путь.

Главный плюс Django - с его помощью ваше приложение очень хорошо масштабируется. По мере того, как в процессе разработки оно будет становится все больше и больше, с Django вам будет куда проще поддерживать организованность, чем с любым другим Python-фреймворком. Кстати, Django - фреймворк с открытым исходным кодом, со всеми вытекающими.

Flask - микрофреймворк, в некотором роде являющийся полном противоположностью Django. Он будет прост и понятен новичку, но обеспечит лишь базовый уровень возможностей, в то время как основную функциональность на себя должны будут взять сторонние интегрированные компоненты. Соответственно полного погружения в предмет Flask вам не подарит, лишь общее представление.

То есть если вы знаете, как и что вам необходимо использовать для реализации задумки, то Flask может стать тем минимальным клеем, что соберёт все воедино. Но если у вас нет ни опыта работы, ни понимания того, как должно функционировать будущее приложение, то Flask - далеко не лучший выбор.

Pyramid - это некий компромиссе между Django и Flask. Данный фреймворк не так функционален, как Django, и не так упрям, как Flask, но прост, удобен и вполне достаточен для организации большинства веб-приложений. Здесь есть большая библиотека официальных и неофициальных плагинов, с помощью которых вы сможете реализовать все задумки для вашего проекта.

Программирование на Python

Часть 11. Web-программирование: Django

Серия контента:

Одной из наиболее фундаментальных архитектур для приложений является так называемая архитектура модель-представление-контроллер (Model-View-Controller) или MVC, которая разделяет базовый функционал приложения на ряд отдельных компонентов. При этом достигается главная цель: одна модель на много приложений.

Джанго – это высокоуровневый питоновский Web-фреймворк, который реализован на основе архитектуры MVC. Джанго имеет прозрачный дизайн, дает возможность для оперативной разработки Web-приложений, позволяет разрабатывать динамические Web-сайты.

Отличительные особенности джанго:

  • любой запрос обрабатывается программно и перенаправляется на свой адрес(url);
  • разделение контента и представления с помощью шаблонов;
  • абстрагирование от низкого уровня баз данных.

Джанго-приложение состоит из четырех основных компонентов.

  1. Модель данных: данные являются сердцевиной любого современного Web-приложения. Модель – важнейшая часть приложения, которое постоянно обращается к данным при любом запросе из любой сессии. Любая модель является стандартным питоновским классом. Объектно-ориентированный маппер (ORM) обеспечивает таким классам доступ непосредственно к базам данных. Если бы не было ORM, программисту пришлось бы писать запросы непосредственно на SQL. Модель обеспечивает облегченный механизм доступа к слою данных, инкапсулирует бизнес-логику. Модель не зависит от конкретного приложения. Данными можно манипулировать даже из командной строки, не используя при этом Web-сервер.
  2. Представление (view): вьюхи в джанге выполняют разнообразные функции, в том числе контролируют запросы пользователя, выдают контекст в зависимости от его роли. View – это обычная функция, которая вызывается в ответ на запрос какого-то адреса (url) и возвращает контекст.
  3. Шаблоны: они являются формой представления данных. Шаблоны имеют свой собственный простой метаязык и являются одним из основных средств вывода на экран.
  4. URL: это всего лишь механизм внешнего доступа к представлениям (view). Встроенные в урлы регулярные выражения делают механизм достаточно гибким. При этом одно представление может быть сконфигурировано к нескольким урлам, предоставляя доступ различным приложениям. Здесь поддерживается философия закладок: урлы становятся как бы самодостаточными и начинают жить независимо от представления.

Для новичков, которые впервые сталкиваются с джанго и питоном, может показаться, что тут используется какой-то особый метаязык. Но это не так. Все, что можно сделать в питоне, можно сделать и в джанго: тут есть доступ ко всем стандартным, и не только, питоновским библиотекам, плюс встроенный функционал джанго. Проекты, реализованные на джанго:

Сегодня мы рассмотрим следующие темы.

  1. Как инсталлировать джанго.
  2. Первое приложение.
  3. Подключение базы данных.
  4. Первое представление.
  5. Шаблоны.
  6. Администрирование.

1. Как инсталлировать джанго

Прежде всего, у вас должен быть установлен питон не ниже версии 2.3. Установить джанго можно по-разному: можно взять его из локального репозитария, можно взять официальный релиз – в этом случае ищите его тут:

После разархивации в каталоге проекта запустите команду:

setup.py install > import django

Проверка версии джанго:

> django.VERSION

На данный момент официальная стабильная версия – 1.1.1.

2. Первое приложение

Для создания первого приложения зайдем в свой домашний каталог и запустим команду:

django-admin.py startproject mysite

Будет создан подкаталог mysite, где и будет лежать приложение. Заходим в созданный каталог и видим следующую файловую структуру:

mysite/ __init__.py manage.py settings.py urls.py

Init__.py – пустой файл, который подключает текущий каталог как стандартный питоновский пакет.

manage.py – утилита, управляющая сайтом.

settings.py – конфигурация сайта.

urls.py – таблица урлов или таблица для всего контента сайта.

Для того чтобы загрузить наше Web-приложение, запустим команду:

python manage.py runserver Validating models... 0 errors found. Django version 1.1, using settings "mysite.settings" Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

Если теперь в браузере открыть адрес http://127.0.0.1:8000/, то убедимся в том, что приложение запущено: появится стандартное приглашение.

3. Подключение базы данных

Джанго поддерживает следующие серверы баз данных: PostgreSQL, SQLite, MySQL, Microsoft SQL Server, Oracle.

В нашем примере мы выбираем постгрес – не потому, что он лучше, это не имеет принципиального значения. Убедитесь в том, что постгрес уже установлен на вашей системе, в противном случае его нужно проинсталлировать. После этого в файле settings.py пропишем настройки для постгреса:

DATABASE_ENGINE = "postgresql_psycopg2" DATABASE_NAME = "mysite" DATABASE_USER = "postgres" TIME_ZONE = "Europe/Moscow" LANGUAGE_CODE = "ru-ru"

Запускаем две команды, которые создают базу данных mysite – постгрес перед этим, естественно, должен быть уже запущен:

psql -d template1 -U postgres -c "DROP DATABASE mysite;" psql -d template1 -U postgres -c "CREATE DATABASE mysite WITH OWNER postgres ENCODING="UNICODE";"

Запускаем команду, которая создает в этой базе около 10 системных таблиц:

python manage.py syncdb

4. Первое представление

Теперь сгенерируем каркас для нашего Web-приложения:

python manage.py startapp People

Внутри каталога mysite появится подкаталог People со следующей структурой:

People/ __init__.py models.py tests.py views.py

Добавим в settings.py последнюю строку, которая добавляет новый путь:

INSTALLED_APPS = ("django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.sites", "mysite.People")

В settings.py в качестве корневого адреса должен быть:

ROOT_URLCONF = "mysite.urls"

Создадим модель Person – стандартный питоновский класс с двумя атрибутами – имя, и-мейл. Файл models.py:

from django.db import models class Person(models.Model): name = models.CharField("name", max_length=200) email = models.EmailField("Email", blank=True) def __str__(self): return "%s" % (self.name)

После того как добавляется новая модель, ее нужно синхронизировать с базой данных. Для этого из командной строки выполняем команду:

python manage.py syncdb

После этого в базе данных появится новая таблица. Нужно заметить, что если вы после этого будете вносить изменения в уже существующую модель и пытаться синхронизировать эти изменения с базой данных, то джанго никак не будет на это реагировать: в базу добавляются только новые объекты. Для внесения изменений уже придется пользоваться sql-скриптами на апдэйт конкретных таблиц.

Теперь напишем простейшее представление, которое выведет приглашение-файл views.py:

from django.shortcuts import HttpResponse from mysite.People.models import Person def index(request): html = "

People !!!


" return HttpResponse(html)

Добавим урл – файл urls.py:

from django.conf.urls.defaults import * urlpatterns = patterns("", (r"^People/$", "mysite.People.views.index"))

Вновь запускаем Web-приложение:

python manage.py runserver

Открываем адрес в браузере и видим приглашение:

http://127.0.0.1:8000/People/

5. Шаблоны

В корне каталога mysite создадим каталог templates. В файле settings.py добавим строку:

TEMPLATE_DIRS = ("/home/mysite/templates")

Добавленный путь должен быть абсолютным. В добавленный каталог положим файл person.htnl следующего содержания:

People !!!


Personal Information
  • Name: {{p.name}}
  • Email: {{ p.email }}
  • В нашем единственном представлении index мы сделаем изменения: создадим объект Person и передадим его в вызываемый шаблон в качестве параметра. В шаблоне мы берем атрибуты этого параметра с помощью префикса двойных кавычек:

    {{p.name}} {{p.email}}

    Файл views.py после подключения шаблона теперь будет выглядеть так:

    from mysite.People.models import Person from django.shortcuts import render_to_response, get_object_or_404 def index(request): person = Person() person.name = "Alex" person.email = "[email protected]" return render_to_response("person.html", {"p": person})

    После перезагрузки Web-страницы в браузере мы увидим эти атрибуты.

    6. Администрирование

    Администраторская часть в джанго по умолчанию отключена. Для ее включения добавим последнюю строку в settings.py:

    INSTALLED_APPS = ("django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.sites", "mysite.People", "django.contrib.admin")

    Для работы с админской частью нужно иметь рутовые права, поэтому нужно вначале создать суперпользователя:

    python manage.py createsuperuser

    После этого запустим команду:

    python manage.py syncdb

    Файл urls.py с добавленным админским функционалом будет иметь следующий вид:

    from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns("", (r"^admin/", include(admin.site.urls)), (r"^People/$", "mysite.People.views.index"))

    Запускаем Web-приложение:

    python manage.py runserver

    Набираем в браузере адрес: http://127.0.0.1:8000/admin/. И попадаем на страницу логина. После ввода логина и пароля суперпользователя открывается админская часть. В ней можно добавлять и редактировать объекты.

    Заключение

    Итак, сегодня мы узнали, что такое Джанго и почему стоит остановить на нем свой выбор. Это бесплатный фреймворк, который поддерживает модель MVC, имеет несколько программных интерфейсов к различным базам данных, интуитивно понятный интерфейс администрирования с возможностью расширения, поддержку многоязычности и т.д. Этот Web-фреймворк обладает рядом преимуществ: джанго хорошо документирован – сайт разработчиков http://www.djangoproject.com/ тому подтверждение. Легкость установки и настройки помогают значительно экономить время. Малое число внешних зависимостей удобно для пользования: все, что нам нужно – это питон. На этом наш цикл статей можно считать завершенным. Конечно, автор не ставил перед собой задачи написать подробный учебник или справочник, скорее здесь речь идет о кратком вводном курсе для разработчиков, желающих освоить новый для себя инструмент.

    Код примеров проверялся на версии питона 2.6.

    Ресурсы для скачивания

    static.content.url=http://www.сайт/developerworks/js/artrating/

    Zone=Linux, Open source

    ArticleID=517107

    ArticleTitle=Программирование на Python: Часть 11. Web-программирование: Django