Как сделать веб приложение на python. Нужно ли переходить? Читаемость имеет значение


Программирование на 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

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

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

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

    Python Web Server Gateway Interface v1.0 (WSGI)

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

    Появление стандарта

    В начале этого века были приложены все усилия, чтобы, наконец, представить публике Python Enhancement Proposal (PEP) 333.

    Из PEP (Python Enhancement Proposal) 333:

    This document specifies a proposed standard
    interface between web servers and Python web
    applications or frameworks, to promote web
    application portability across a variety of
    web servers.

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

    Сравнение

    В данном разделе, посвященном сравнению веб-серверов для приложений Python, речь пойдет о некоторых популярных доступных серверах. Цель данного раздела – дать читателю четкое представление о серверах и помочь подобрать соответствующий требованиям приложения сервер. В связи с огромным количеством веб-серверов, которое невозможно охватить в рамках одной статьи, далее будут описаны только «выдающиеся» серверы (т.е., наиболее популярные, наиболее надежные, или же обладающие более мощными функциями по сравнению с остальными машинами).

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

    Веб-серверы (в алфавитном порядке)

    CherryPy WSGI -сервер

    Что это такое?

    На самом деле, CherryPy – это фреймворк. Тем не менее, он полностью автономен (то есть, может работать сам по себе, в том числе на стадии производства, и не требует дополнительного программного обеспечения). Это осуществляется благодаря собственному веб-серверу WSGI, совместимому с HTTP/1.1. Проект CherryPy описывает его как «готовый к производству высокоскоростной общий HTTP-сервер». Поскольку это WSGI-сервер, он может обслуживать любое другое приложение Python WSGI, не привязываясь к фреймворку для разработки приложений CherryPy.

    • Он компактен и прост.
    • Он может обслуживать любые веб-приложения Python, работающие на WSGI.
    • Он может обрабатывать статические файлы, а также обслуживать файлы и папки.
    • Поставляется с поддержкой SSL.
    • Это легко адаптируемая, надежная и простая в использовании альтернатива Python.

    Gunicorn

    Что это такое?

    Gunicorn – автономный веб-сервер с обширной функциональностью, предоставленной в удобном виде. Он использует pre-fork модель (это значит, что что главный процесс управляет инициированными рабочими процессами различного типа, которые затем обрабатывают запросы). И все это можно настроить и адаптировать относительно потребностей проекта и разнообразных сценариев производства.

    Почему нужно рассмотреть возможность его использования?

    • Он поддерживает WSGI и может быть использован с любым приложением и фреймворком Python на основе WSGI.
    • Это также полноценная замена Paster (например, Pyramid), сервера разработки Django, web2py, и так далее.
    • Предлагает широкий выбор различных типов «исполнителей»/конфигураций и автоматическое управление рабочими процессами.
    • Поддерживает HTTP/1.0 и HTTP/1.1 с помощью синхронных и асинхронных исполнителей.
    • Поставляется с поддержкой SSL
      Расширяется с помощью специальных точек входа.
      Интуитивно понятен, имеет четкую архитектуру.

    Tornado (HTTP- сервер)

    Что это такое?

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

    Почему нужно рассмотреть возможность его использования?

    • Необходим при работе с фреймворком Tornado;
    • Удобен для приложений, которым нужен асинхронный режим работы.

    Хотя, в таких случаях можно также использовать Gunicorn с асинхронными исполнителями Tornado.

    Twisted Web

    Что это такое?

    Twisted Web – это веб-сервер, который поставляется с сетевой библиотекой Twisted. Тогда как сама библиотека Twisted является «событийно-управляемым сетевым механизмом», сервер Twisted Web работает на WSGI, следовательно, может содержать другие веб-приложения Python.

    Почему нужно рассмотреть возможность его использования?

    • Это простой в использовании, надежный и зрелый продукт.
    • Может запускать приложения WSGI Python.
    • Может использоваться как фреймворк веб-сервера Python, что позволяет запрограммировать его на обслуживание пользовательского HTTP.
    • Простое и быстрое создание прототипа с помощью Python Scrips (.rpy), что выполняется по запросам HTTP.
    • Обладает возможностями прокси и инвертированного прокси-сервера.
    • Поддерживает Virtual Hosts.
    • Обслуживает Perl, PHP и т.п. через программный интерфейс приложения twisted.web.twcgi.

    uWSGI

    Что это такое?

    Несмотря на очень запутанное соглашение об именах, сам uWSGI является обширным проектом, который состоит из большого количества компонентов, которые предоставляют полный набор программного обеспечения для построения хостинговых услуг. Один из этих компонентов, сервер uWSGI, запускает приложения Python WSGI. Он может использовать различные протоколы, в том числе и собственный протокол uwsgi, идентичный SCGI. Поскольку автономные HTTP-серверы по сравнению с серверами приложений более популярны, веб-серверы NGINX и Cherokee разработаны как модульные, что позволяет uWSGI использовать собственный протокол с высокой производительностью и обеспечивает прямой контроль над процессами.

    Почему нужно рассмотреть возможность его использования?

    • Поставляется с адаптером WSGI и полностью поддерживает приложения Python на WSGI.
    • Связан с libpython. Он загружает код приложения при запуске и действует как интерпретатор Python, а также анализирует входящие запросы и вызывает Python.
    • Поставляется с прямой поддержкой популярного веб-сервера NGINX (а также Cherokee и Lighttpd).
    • Написан на языке C.
    • Различные компоненты могут сделать гораздо больше, чем просто запуск приложения, что может быть полезно для расширения функций.
    • В настоящее время (по состоянию на конец 2013 года), uWSGI активно развивается, регулярно появляются новые версии.
    • Имеет различные механизмы для запуска приложений (асинхронного и синхронного).
    • Невысокое потребление памяти при запуске.

    Waitress WSGI-сервер

    Что это такое?

    Waitress – это сервер Python WSGI. На первый взгляд может показаться, что он не обладает существенными отличиями, однако его философия разработки отделяет его от остальных серверов. Его целью является упрощение процессов разработки и производства, достаточно сложных на серверах Python. Для этого Waitress нейтрализует конфликты, вызванные различиями платформ (например, Unix vs. Windows), интерпретаторов (CPython vs. PyPy) и версий Python (версия 2 vs 3).

    Почему нужно рассмотреть возможность его использования?

    • Это очень простой, минималистский сервер Python.
    • Поддерживает HTTP/1.0 and HTTP/1.1 (Keep-Alive).
    • Поставляется готовым к развертыванию производства с широким спектром поддержки платформы.
    • В отличие от CherryPy, он по своей сути независим от фреймворка.
    • Запускается на Windows и Unix, работает с интерпретаторами CPython и PyPy (только на Unix).
    • Поддерживает версии Python 2 и 3.

    Модули для автономных серверов

    mod _ python с адаптером WSGI (Apache ) (встраивание Python )

    Простыми словами, mod_python – это модуль Apache, который встраивает Python непосредственно в сервер. Хотя использовать его не всегда рекомендуется, он может запускать приложения WSGI на Apache с помощью оболочек.

    Django is an extremely popular and fully featured server-side web framework, written in Python. The module shows you why Django is one of the most popular web server frameworks, how to set up a development environment, and how to start using it to create your own web applications.

    Prerequisites

    Before starting this module you don"t need to have any knowledge of Django. Ideally, you would need to understand what server-side web programming and web frameworks are by reading the topics in our Server-side website programming first steps module.

    A general knowledge of programming concepts and Python is recommended, but is not essential to understanding the core concepts.

    Note : Python is one of the easiest programming languages for novices to read and understand. That said, if you want to understand this module better, there are numerous free books and tutorials available on the Internet to help you out. (new programmers might want to check out the Python for Non Programmers page on the python.org wiki).

    Guides

    Django introduction In this first Django article we answer the question "What is Django?" and give you an overview of what makes this web framework special. We"ll outline the main features, including some advanced functionality that we won"t have time to cover in detail in this module. We"ll also show you some of the main building blocks of a Django application, to give you an idea of what it can do before you set it up and start playing. Setting up a Django development environment Now that you know what Django is for, we"ll show you how to setup and test a Django development environment on Windows, Linux (Ubuntu), and Mac OS X - whatever common operating system you are using, this article should give you what you need to be able to start developing Django apps. Django Tutorial: The Local Library website The first article in our practical tutorial series explains what you"ll learn, and provides an overview of the "local library" - an example website we"ll be working through and evolving in subsequent articles. Django Tutorial Part 2: Creating a skeleton website This article shows how you can create a "skeleton" website project as a basis, which you can then go on to populate with site-specific settings, urls, models, views, and templates. Django Tutorial Part 3: Using models This article shows how to define models for the LocalLibrary website - models represent the data structures we want to store our app"s data in, and also allow Django to store data in a database for us (and modify it later on). It explains what a model is, how it is declared, and some of the main field types. It also briefly shows a few of the main ways you can access model data. Django Tutorial Part 4: Django admin site Now that we"ve created models for the LocalLibrary website, we"ll use the Django Admin site to add some "real" book data. First we"ll show you how to register the models with the admin site, then we"ll show you how to login and create some data. At the end we show some ways in which you can further improve the presentation of the admin site. Django Tutorial Part 5: Creating our home page We"re now ready to add the code to display our first full page - a home page for the LocalLibrary that shows how many records we have of each model type and provides sidebar navigation links to our other pages. Along the way we"ll gain practical experience in writing basic URL maps and views, getting records from the database, and using templates. Django Tutorial Part 6: Generic list and detail views This tutorial extends our LocalLibrary website, adding list and detail pages for books and authors. Here we"ll learn about generic class-based views, and show how they can reduce the amount of code you have to write for common use cases. We"ll also go into URL handling in greater detail, showing how to perform basic pattern matching. Django Tutorial Part 7: Sessions framework This tutorial extends our LocalLibrary website, adding a session-based visit-counter to the home page. This is a relatively simple example, but it does show how you can use the session framework to provide persistent behaviour for anonymous users in your own sites. Django Tutorial Part 8: User authentication and permissions In this tutorial we"ll show you how to allow users to login to your site with their own accounts, and how to control what they can do and see based on whether or not they are logged in and their permissions . As part of this demonstration we"ll extend the LocalLibrary website, adding login and logout pages, and user- and staff-specific pages for viewing books that have been borrowed. Django Tutorial Part 9: Working with forms In this tutorial we"ll show you how to work with HTML Forms in Django, and in particular the easiest way to write forms to create, update, and delete model instances. As part of this demonstration we"ll extend the LocalLibrary website so that librarians can renew books, and create, update, and delete authors using our own forms (rather than using the admin application). Django Tutorial Part 10: Testing a Django web application As websites grow they become harder to test manually - not only is there more to test, but, as the interactions between components become more complex, a small change in one area can require many additional tests to verify its impact on other areas. One way to mitigate these problems is to write automated tests, which can easily and reliably be run every time you make a change. This tutorial shows how to automate unit testing of your website using Django"s test framework. Django Tutorial Part 11: Deploying Django to production Now you"ve created (and tested) an awesome LocalLibrary website, you"re going to want to install it on a public web server so that it can be accessed by library staff and members over the Internet. This article provides an overview of how you might go about finding a host to deploy your website, and what you need to do in order to get your site ready for production. Django web application security Protecting user data is an essential part of any website design. We previously explained some of the more common security threats in the article - this article provides a practical demonstration of how Django"s in-built protections handle such threats.

    Assessments

    The following assessment will test your understanding of how to create a website using Django, as described in the guides listed above.

    DIY Django mini blog In this assessment you"ll use some of the knowledge you"ve learned from this module to create your own blog.

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

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

    Общие характеристики:

    • Маршрутизация URL-адресов
    • Шаблоны вывода
    • Управление базами данных
    • Управление сеансом
    • Безопасность от стандартных атак

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

    Например, фреймворк Flask не поддерживает базы данных. Для их использования потребуется отдельный модуль. А вот фреймворк Django по умолчанию поддерживает базы данных.

    Зачем использовать фреймворки при создании веб-приложений?

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

    Какие существуют фреймворки Python?

    Django и Flask – самые популярные веб-фреймворки. Однако ознакомиться с другими фреймворками не помешает.

    Вот некоторые из них:

    • Bottle
    • Pyramid
    • Muffin
    • CherryPy
    • web2py
    • Falcon
    • Turbo2Gears

    Django

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

    Доступ к базе данных осуществляется через объектно-реляционное преобразование: вы определяете свои модели данных в Python, и Django начинает работать с реляционными системами управления базами данных (СУБД). Однако, если вам нужно, вы можете написать свои собственные SQL-запросы в Django. Также в этом фреймворке поддерживается маршрутизация URL-адресов.

    Особенности:

      • Объектно-реляционное преобразование
      • Маршрутизация URL-адресов и их представления
      • Механизм шаблонов
      • Формы
      • Идентификация
      • Права администратора
      • Интернационализация
      • Безопасность

    Если вы хотите узнать о Django побольше, прочтите это .

    Знаете ли вы, что такие сайты, как NASA, BitBucket и Pinterest были написаны с помощью Django?

    Flask

    Flask является микрофреймворком Python, который имеет модульный дизайн. Данный фреймворк предназначен для создания веб-приложений. У Flask нет определенной системы базы данных или системы ORM. Если вы хотите использовать базу данных, то вам потребуется отдельный модуль. Flask часто комбинируют с SQLAlchemy для использования баз данных.

    Flask очень прост и интуитивно понятен:

    Flash_code

    from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "Hello World!" if __name__ == "__main__": app.run()

    from flask import Flask

    app = Flask (__name__ )

    @ app . route ("/" )

    def hello_world () :





    

    2024 © gtavrl.ru.