Статьи

Питание от сети с помощью Python Web Framework

Вступление

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

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

Разработка веб-приложения с Django

Django — это веб-среда Python, разработанная для поддержки быстрой разработки приложений (RAD). Благодаря строгому соблюдению принципа «Не повторяйся (DRY)», Django облегчает разработку высокопроизводительных и высокопроизводительных веб-приложений, не тратя время на переизобретение колеса. Поэтому написание полноценных динамических веб-сайтов, управляемых данными, и приложений с помощью Django — это удивительно простая задача, состоящая всего из двух необходимых шагов:

  • Убедитесь, что Python установлен.
  • Скачайте и установите Django.

Рассмотрим, например, создание веб-сайта, управляемого данными.

От терминала перейдите к нужному местоположению нового веб-сайта и запустите интерактивную оболочку Python, введя в командной строке python . Затем введите следующий код:

 django-admin.py startproject my_new_web_site[code] Here, the built-in command, <code>django-admin.py</code>, is used to create an on-the-fly project named “my_new_web_site”; the name may be any desired name. Used to manage Django applications, the <code>django-admin.py</code> executable shell supplies a project with a list of Django subcommands. In this example, the <code>startproject</code> subcommand is used to create a Django project tree with the following structure: [code]my_new_web_site/ manage.py my_new_web_site/ __init__.py settings.py urls.py wsgi.py 

my_new_web_site представляет родительский каталог проекта «my_new_web_site». Чтобы избежать путаницы, рекомендуется переименовать этот каталог, поскольку Django по умолчанию использует то же имя для пакета Python.

manage.p y — это многоцелевая утилита, которая используется для связи с проектом.

my_new_web_site/my_new_web_site представляет фактическое местоположение пакета Python проекта.

settings.py — то, где различные конфигурации проекта установлены и сохранены.

urls.py — это важный файл, который обслуживает различные функции, такие как разделение URL-адресов из кода Python и сопоставление функций URL-адресов и обратных вызовов Python («представления» Django).

wsgi.py используется при наличии WSGI-совместимого веб-сервера.

Запуск приложения

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

 $ python manage.py runserver 

Эта команда вернется к терминалу, вывод аналогичен следующему:

 Validating models... 0 errors found November 09, 2013 - 17:57:17 Django version 1.6, using settings 'my_new_web_site.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 

Просто направьте веб-браузер по адресу: http://127.0.0.1:8000/, где будет отображаться следующее сообщение:

Это сработало!
Поздравляем с первой страницей на Django.

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

Добавление функциональности базы данных

По своему замыслу Django помещает содержимое приложения в базу данных SQLite без каких-либо дополнительных действий. И хотя SQLite достаточно для новичков в базе данных или в тех случаях, когда рост приложений не является проблемой, в противном случае лучше всего использовать базу данных, такую ​​как MySQL.

В качестве примера и учитывая, что MySQL уже установлен, создайте базу данных MySQL, выполнив следующие команды в приглашении mysql:

 mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; mysql> CREATE DATABASE my_new_web_site; mysql> GRANT ALL ON my_new_web_site.* TO 'username'@'localhost'; 

После успешного создания новой базы данных измените параметры конфигурации в settings.py , добавив следующее:

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'my_new_web_site', 'USER': 'username', 'PASSWORD': 'password', # localhost: leave “HOST” empty for domain sockets or use “127.0.0.1” for TCP. 'HOST': '', # Leave the port number empty if using the default port, 8000. 'PORT': '', } } 

Это создает новую базу данных MySQL, которая может использоваться во всем приложении, но не инициализирует базу данных и не создает приложение «суперпользователь» (администратор). Чтобы создать «суперпользователя», выполните команду syncdb и следуйте syncdb на экране:

 $ python manage.py syncdb Creating tables ... Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_groups Creating table auth_user_user_permissions Creating table auth_user Creating table django_content_type Creating table django_session Creating table django_site … Username (leave blank to use 'myusername'): Email address: Password: Password (again): Superuser created successfully. Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s) 

Приложение теперь имеет полноценную серверную часть на базе MySQL, доступную через manage.py :

 $ python manage.py shell >>> from django.contrib.auth.models import User >>> User.objects.all() [<User: myusername>] 

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

Вывод

Веб-платформы Python предназначены для сопоставления входящих HTTP-запросов с конкретным кодом Python или для предоставления объектов ответа и запроса. Кроме того, эти платформы работают при разработке крупномасштабных веб-приложений, таких как системы управления контентом (CMS), прототипирование концепций и многое другое. Существует ряд веб-фреймворков Python, направленных на разработку объектно-ориентированных веб-приложений.

И, как показано в этом вводном руководстве, некоторые платформы представляют собой приложения с полным стеком, которые можно использовать для создания полнофункциональных, расширяемых приложений, управляемых данными.