Django построение веб-приложений на Python


Содержание

Дж. Форсье, П. Биссекс, У. Чан — Django. Разработка веб-приложений на Python

На базе простой и очень надежной платформы Django на Python Вы имеете возможность проектировать мощные веб-решения всего лишь из нескольких строк программного кода. Авторы книги «Django. Разработка веб-приложений на Python» детально описывают все инструменты, приемы и концепции, которые нужно знать, чтобы максимально эффективно использовать Django версии 1.0, включая все главные характерные особенности последней версии. Следует отметить, что это руководство начинается со своеобразного введения в Python, после чего подробно рассматриваются ключевые компоненты Django, а также порядок организации взаимодействия между указанными выше продуктами. В данной книге описываются способы создания конкретных приложений: фотогалерея, система управления содержимым, блог, а также инструмент публикации фрагментов программного кода с подсветкой синтаксиса. После всего этого рассматриваются более трудные для восприятия темы: синдицирование, тестирование веб-приложений, а также, настройка приложения администрирования. Авторы открывают секреты Django, давая детальные разъяснения и предоставляя множество примеров кода, сопровождая их описанием и иллюстрациями.

Год издания: 2010
Издательство: Символ-Плюс
Формат: DJVU
Страниц: 456

Скачано: 19549 раз

Комментарии

Максим, 28.09.2013 20:13

Отличная книга, многим мне очень помогла.

Александр, 18.07.2014 02:14

И тебе спасибо, за комментарий. Теперь я знаю что скачиваю ее не зря

Костя, 31.07.2014 16:44

И вам спасибо по той же причине, парни сверху :3

Виктор, 13.08.2014 16:51

Владислав, 08.09.2014 14:56

Прочитал комментарии, не смог пройти мимо, качаю однозначно )))

Дмитрий, 10.09.2014 10:12

Дал слово себе, ничего больше с интернета не скачивать, но тут такое.

Андрей, 13.09.2014 04:57

Какое? Django 1.0 ? Действительно, сложно устоять и не скачать..сейчас даже симфони1 проще найти, чем первый джанго..

Юрий, 12.11.2014 18:35

Владимир, 21.01.2015 16:01

Спасибо добрые люди за комментарий новичок, буду качать

Анонимус, 02.07.2015 18:42

Хрень собачья. Год издания 2009 в действительности а не 2013. Устаревшая

Rouber, 19.10.2015 00:49

Я из 2015 стоит читать?

Юрий, 25.11.2015 02:06

Юрий, 29.08.2020 14:01

Khan, 05.02.2020 11:14

Спасибо за книгу

rad, 03.11.2020 10:12

Я, 15.06.2020 15:31

Разработка для Web с помощью Django и Python

Среда Web-разработки Django на языке Python, от установки до законченного Web-сайта

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

Этот контент является частью # из серии # статей: Среды Web-разработки на языке Python, Часть 1

Этот контент является частью серии: Среды Web-разработки на языке Python, Часть 1

Следите за выходом новых статей этой серии.

Проект Django представляет собой настраиваемую пользователем среду разработки. Он берёт начало из Web-сайта одной онлайн-газеты и был выпущен как система с открытым исходным кодом в июле 2005 года. Главные компоненты среды разработки Django следующие:

  • Объектно-реляционное отображение (object-relational mapping) для создания моделей
  • Безупречный интерфейс администратора, специально созданный для конечных пользователей
  • Элегантно спроектированный механизм адресования (URL)
  • Язык шаблонов, для дизайнеров
  • Система кэширования

Эта статья — первая из двух статей о среде Web-разработки на языке Python. Вторая статья представит вам среду разработки TurboGears.

Чтобы использовать и понимать код в данной статье, вам необходимо установить Python и знать, как им пользоваться на начальном уровне. Проверьте, есть ли у вас Python, и какой версии, набрав python -V . Минимальным требованием Django является версия 2.3.5, которая доступна вам на Web-сайте Python (см. ссылку в разделе Ресурсы в конце статьи). Вам также следует хотя бы немного быть знакомым с архитектурой MVC.

Установка Django

В этой статье используется разрабатываемая версия Django для того, чтобы воспользоваться преимуществами последних улучшений, внесённых в среду разработки Django. Я рекомендую вам использовать эту версию до появления версии 0.95. Узнайте о наличии последней версии Django на его Web-сайте (снова см. ссылку в Ресурсах).

Чтобы скачать и установить Django вам нужно:

Листинг 1. Скачивание и установка Django

Инструмент администрирования Django

После установки Django вам необходим инструмент администрирования Django, а именно django-admin.py, добавленный в переменную окружения path. Листинг 2 показывает некоторые из команд, доступных инструменту администратора:

Листинг 2. Использование инструмента администрирования Django

Проекты и приложения в Django

Чтобы начать проект Django, используйте команду программы django-admin startproject вот так:

Листинг 3.Создание проекта

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

Листинг 4. Содержание директории djproject

В этом проекте вы создадите приложение для отдела занятости, называемое «jobs.» Для создания приложения используйте скрипт manage.py , который является специальным для проекта скриптом в django-admin.py, в котором автоматически задаётся файл settings.py:

Листинг 5. Использование manage.py с параметром startapp

Это создает костяк приложения с одним модулем Python для ваших моделей и другим для ваших видов (view). Директория jobs будет содаржать следующие файлы:

Листинг 6. Содержание директории приложения jobs

Местоположение приложения внутри проекта является чистой условностью, созданной для новых разработчиков в Django, а не требованием. Как только вы начнете перемешивать и сопоставлять приложения в нескольких проектах, вы можете поместить приложения в их собственные пространства имён для модулей и связать их вместе, используя настройки и главные файлы URL. Но пока, следуйте приведенным ниже этапам.

Чтобы Django знал о новом приложении, вам необходимо добавить строку в поле INSTALLED_APPS в файле settings.py. Для этого приложения для отдела занятости нужно добавить строку djproject.jobs :

Листинг 7. Добавление строки к settings.py

Создание модели

У Django есть своя собственная библиотека object-relational mapper (ORM), которая поддерживает динамический доступ к базам данных через объектный интерфейс Python. Интерфейс Python является очень удобным и эффективным, но вы также можете отказаться от него и напрямую использовать SQL при необходимости.

На данный момент ORM предоставляет поддержку для баз данных PostgreSQL, MySQL, SQLite, а также Microsoft® SQL.

Это пример использует SQLite, в качестве интерфейса к базе данных. SQLite является легковесной базой данных, не требующей конфигурации и располагается на диске в виде простого файла. Чтобы использовать SQLite, просто установите библиотеку pysqlite с помощью инструментов установки (setuptools) (см. дополнительную информацию об инструментах установки (setuptools) и, в частности, об инструменте easy_install , который вам необходимо установить отдельно, в разделе Ресурсы):

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

Листинг 8. Конфигурирование базы данных в settings.py

Это приложение для отдела занятости будет иметь два типа объектов: Местоположения (Locations) и Работы (Jobs). Местоположение включает в себя поля города, штата (по желанию), а также страны. Работа имеет местоположение, должность, описание и дату публикации.

Листинг 9. Модуль jobs/models.py

Метод __str__ — это специальный метод класса в языке Python, который возвращает строковое представление объекта. Django достаточно широко использует этот метод, когда отображает объекты в инструменте администратора.

Чтобы увидеть схему базы данных для модели, запустите manage.py с командой sql . Схема пока еще не будет задействована.

Листинг 10. Просмотр схемы базы данных с помощью команды manage.py sql

Для инициализации и установки модели, запустите команду синхронизирования базы данных syncdb :

/dev/djproject$ python manage.py syncdb

Отметим, что команда syncdb просит вас создать учетную запись суперпользователя. Это происходит потому, что приложение django.contrib.auth, которое предоставляет базовые средства аутентификации пользователя, установлено по умолчанию в ваших настройках INSTALLED_APPS. Имя суперпользователя и пароль будут использоваться для регистрации в инструменте администратора, описанном в следующем разделе. Помните, что это имя и пароль суперпользователя Django, а не системы.

Наборы запросов

Модели Django обращаются к базе данных через изначально установленный Управляющий (Manager) класс, называемый objects . Например, чтобы вывести список всех Работ, вам нужно использовать метод all , принадлежащий менеджеру objects :

Листинг 11. Вывод всех работ (jobs)

Управляющий класс также имеет методы фильтрации, называемые filter (фильтрация) и exclude (исключение). Фильтрация получает все объекты, подходящие под условия, тогда как исключение дает все объекты, не подходящие под них. Нижеследующие запросы должны дать такие же результаты («gte» означает «greater than or equal,»(больше или равно) и «lt» означает «less than»)(меньше чем).

Листинг 12. Исключение и фильтрация работ (jobs)

Методы filter и exclude возвращают объекты QuerySet, которые можно связать в цепочку и которые могут даже представлять соединения. Запрос q4 , приведенный ниже, будет находить работы, начиная с 1-го января 2006 года, в г. Кливленд (Cleveland), штат Огайо:

Листинг 13. Снова исключение и фильтрация работ (jobs)

Это хорошо, что QuerySets ленивы. Это означает, что они не выполняются в базе данных, пока не произошла их оценка, и благодаря чему работают гораздо быстрее, чем мгновенные запросы.

Эта леность является очень практичной в сочетании с рассекающей (slicing) функциональностью языка Python. Вместо того, чтобы запрашивать все записи, а затем отсекать нужные записи, нижеследующий код использует смещение (OFFSET), равное 5, и предел (LIMIT), равный 10, в настоящем запросе SQL, весьма улучшая качество выполнения.

Листинг 14. Python-рассечение

Примечание: Используйте метод count , чтобы понять, сколько записей находятся в QuerySet. Метод len в Python делает полную оценку, а затем подсчитывает количество рядов, возращенных в виде записей, тогда как метод count делает действительный Подсчет (COUNT) SQL, который гораздо быстрее. И ваш администратор баз данных поблагодарит вас.

Листинг 15. Подсчет записей

Для более подробной информации, см. раздел Ресурсы для ссылки на «Справочник по интерфейсу API базы данных» для Django.

Инструмент администратора

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

Инструмент администратора представляет собой приложение, которое идет вместе с Django. Перед тем, как его использовать, его необходимо установить так же, как и приложение jobs . Сперва нужно добавить модуль приложения ( django.contrib.admin ) в настройки INSTALLED_APPS:

Листинг 16. Изменения в settings.py


Чтобы сделать инструмент администратора доступным из адреса (URL) /admin, просто раскройте скобки комментария в строке, в предоставленном вам файле urls.py вашего проекта. В следующем разделе будет рассматриваться конфигурация URL более подробно.

Листинг 17. Использование urls.py, чтобы иструмент администратора стал доступным

Пиложение администратора имеет свою модель базы данных, которую необходимо установить. Снова используйте команду syncdb , чтобы завершить следующее:

python manage.py syncdb

Чтобы увидеть инструмент администратора, вы можете использовать тест-сервер, которая прилагается к Django.

Листинг 18. Использование тест-сервера, чтобы увидеть инструмент администратора

Теперь вы можете переместиться в инструмент администратора по адресу http://localhost:8000/admin и зарегистрироваться, используя данные администратора, созданные вами ранее. Вы заметите, что ни одна из ваших моделей не доступна для пользования.

Чтобы открыть доступ к классу через инструмент администратора, создайте для него подкласс Admin (Администратора). Затем вы можете настраивать то, как их можно администрировать добавлением характеристик классов к данному подклассу. Листинг 19 показывает, как добавлять класс Location (Местонахождения) к интсрументу администратора.

Листинг 19. Добасвление класса Location с помощью инструмента администратора

Теперь вы можете создавать, обновлять и удалять записи Местонахождения (Location) через интерфейс администратора.

Цукерберг рекомендует:  Help - фриланс.вебмани. помогите разобраться спасибо
Рисунок 1. Изменение местонахождений с помощью инструмента администратора

Вы можете выводить и сортировать Записи (Records) по городам, штатам и странам, в зависимости от характеристики класса list_display .

Рисунок 2. Вывод местонахождений с помощью инструмента администратора

Инструмент администратора имеет большое количество опций для управления каждым из классов моделей. Листинг 20 показывает несколько примеров, примененных к классу Job:

Листинг 20. Опции для управления классами моделей

В соответствие с вышеупомянутыми настройками, при выводе записей работ (job) будут использоваться: заголовок работы (job), местонахождения и дата издания. Работы будут располагаться в порядке даты издания, начиная с самого последнего (знак минус означает — в порядке убывания). Пользователи могут найти работы по заголовку и описанию, а администраторы могут фильтровать записи, исходя из их местонахождения.

Рисунок 3. Вывод работ с помощью инструмента администратора

Проектирование своей схемы URL

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

Модуль urls.py создается и определяется в качестве начала отсчета конфигурации URL (с помощью значения ROOT_URLCONF в модуле settings.py). Единственное требование для файла конфигурации URL состоит в том, что он должен содержать объект, определяющий шаблоны, называемые urlpatterns .

Приложение управления работой (job) будет начинаться с index-видом и детальным (detail) видом, которые доступны через настоящие отображения URL:

  • /jobs index-вид: Отображает последние 10 работ
  • /jobs/1 детальный вид: Отображает работы с одним идентификационным номером (ID)

Оба этих вида (index и детальный вид) будут выполнены в модуле, называемом views.py в приложении работ. Выполнение этой конфигурации в файле urls.py проекта будут выглядеть следующим образом:

Листинг 21. Выполнение конфигурации видов в djproject/urls.py

Отметьте кусочек кода . Это понадобиться позже.

На практике лучше всего — вытаскивать шаблоны URL, специальные для приложений, и помещать их в само приложение. Это отделяет приложение от проекта и позволяет повторно его использовать. Файл конфигурации URL уровня приложений для работ (jobs) будут выглядеть так:

Листинг 22. Файл конфигурации URL уровня приложений, urls.py

С тех пор, как методы видов исходят из одного модуля, для настройки djproject.jobs.views в качестве корневого имени модуля можно использовать первый аргумент, и Django использует его для того, чтобы искать методы index и detail :

Листинг 23. jobs/urls.py: поиск index и detail

Чтобы связать в одно целое адреса (URL), перечисленных выше работ (job), назад в проект, необходимо использовать функцию include . Адреса (URL) уровня приложений теперь связаны в разделе /jobs :

Листинг 24. djproject/urls.py: Связывание адресов (URL) обратно в проект

Если вы попытаетесь войти на начальную (index) страницу (http://localhost:8000/jobs) на этом этапе, используя тест-сервер, вы получите ошибку, так как вид, который будет называться (djproject.jobs.views.index), еще не существует.

Выполнение видов

Вид представляет собой простой метод языка Python, который принимает объект отклика и отвечает за:

  • Любую бизнес-логику (явно или неявно)
  • Контекстный словарь с данными для шаблона
  • Рендеринг (rendering) шаблона с контекстом
  • Объект отклика, который пропускает отрендеренные (rendered) результаты обратно в среду разработки

В Django вызванный метод языка Python, когда запрашивается URL, называется видом, а страница, закаченная и отрендеренная, видом называется шаблоном. По этой причине, команда разработчиков Django говорила о Django, как о среде разработки с MVT (model-view-template — модель-вид-шаблон). С другой стороны, TurboGears называет свои методы контроллерами, а отрендеренные шаблоны видами, что действительно позволяет использовать аббревиатуру MVC. Разница лишь в использовании слов, но смысл остается тем же.

Самый простейший из возможных видов возвращает объект HttpResponse (http отклик), инициализированный в строковый тип. создайте следующий метод и сделайте из /jobs HTTP-запрос, чтобы проверить, что ваши файлы urls.py и views.py правильно настроены.

Листинг 25. jobs/views.py (v1)

Следующий код получает последние 10 работ (job), рендерит их через шаблон и возвращает отклик. Это не будет работать без файла шаблона из следующего раздела.

Листинг 26. jobs/views.py (v2)

В вышеприведенном коде шаблон назван, как строковый jobs/job_list.html Рендеринг шаблона происходит в контексте списка работ (job), названном object_list . Отрендеренный шаблон строки попадает в конструктор HTTPResponse, который отправляется назад в клиент запроса с помощью среды разработки.

Этапы загрузки шаблона, создающие контекст и возвращающие новый объект отклика, перемещены ниже с помощью удобного метода, называемого render_to_response . Также новым является метод детального (detail) вида, который использует удобный для этого метод get_object_or_404 , чтобы осуществить выборку объекта Job, используя приведенные аргументы. Если объект не найден, то выдается ошибка 404. Эти два метода избавляют программу от большого количества стандартных кодов, используемых в большинстве Web-приложений.

Листинг 27. jobs/views.py (v3)

Отметим, что detail берет object_id в качестве аргумента. Этот номер упоминался раньше, после URL-пути /jobs/ к файлу работ (job) urls.py. Он проходит дальше в метод get_object_or_404 в качестве первичного ключа (primary key — pk).

Приведенные выше виды все еще не будут работать, потому что шаблоны, которые они загружают и рендерят (jobs/job_list.html и jobs/job_detail.html) еще не существуют.

Создание шаблонов

Django предоставляет простой язык шаблонов, спроектированный для быстрого рендеринга и простоты использования. Шаблоны Django создаются из простого текста, встроенного в << переменные >> и <% тэги %>. Затем происходит замена переменных на значения, которые они несут. Тэги используются в качестве основы логики управления. Шаблоны можно использовать для генерирования любого формата текстов, включая HTML, XML, CSV и простой текст.

Первое, что нужно сделать — это определить местонахождение шаблонов. Для простоты, создайте директорию для шаблонов внутри директории djproject и добавьте его путь в строке TEMPLATE_DIRS файла settings.py:

Листинг 28. Создание директории шаблонов в settings.py

Шаблоны в Django поддерживают концепцию, называемую наследованием шаблонов, которая позволяет дизайнерам сайтов создавать однородный вид и функциональность без повторения содержания в каждом из шаблонов. Вы можете использовать наследование, определяя документ скелета, или основы, с блочными тэгами. Эти блочные тэги заполняются шаблонами страниц с содержанием. Этот пример показывает скелет кода на HTML с блоками, называемыми title , extrahead и content :

Листинг 29. Документ скелета, templates/base.html

Чтобы приложение было отдельно от проекта, используйте вспомагательный файл основы, в качестве основы для всех файлов страниц приложения Job. Для этого примера, поместите CSS приложения в файл основы для упрощения. В реальном приложении, с хорошо сконфигурированным Web-сервером, возьмите данный CSS и поместите его в статичный файл, обслуживаемый Web-сервером.

Листинг 30. Вспомогательный файл основы, templates/jobs/base.html

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

Теперь создайте 2 шаблона страниц для загрузки и рендеринга. Шаблон jobs/job_list.html просто выполняет итерацию через object_list (список объектов), который он получает через контекст, выдаваемый index-видом, а также отображает ссылку на каждую из страниц с подробной информацией о записи.

Листинг 31. Шаблон templates/jobs/job_list.html

Страница jobs/job_detail.html показывает одну запись, называемую job (работа):

Листинг 32. Страница templates/jobs/job_detail.html

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

Универсальные виды

Django идет вместе с четырьмя наборами универсальных видов, которые позволяют разработчикам создавать приложения, следующие типичным шаблонам:

  • Страницы со списком/подробностями (как вышеприведенный пример)
  • Дробление записей по дате (полезно для новостных сайтов и блогов)
  • Создание, обновление и удаление — СОУ (Creation, update, and deletion — CRUD) объектов
  • Простой прямой рендеринг шаблонов или простое HTTP-перенаправление

Вместо создания методов стандартных видов, вся бизнес-логика находится в файле urls.py и управляется с помощью методов универсальных видов, поддерживаемых Django.

Листинг 33. Универсальные виды в jobs/urls.py

Три важных изменения в данном файле urls.py:

  • Объект отображения info_dict проходит через набор запросов, чтобы был открыт доступ для Jobs.
  • Он использует django.views.generic.list_detail вместо djproject.jobs.views .
  • Действительно вызванные виды — это object_list и object_detail .

Этот проект следует некоторым требованиям, чтобы переход к универсальным видам произошел автоматически:

  • Универсальный детальный (detail) вид ожидает аргумент с именем object_id .
  • Шаблоны следуют наименованию: app_label/model_name_list.html ( jobs/job_list.html ) app_label/model_name_detail.html ( jobs/job_detail.html )
  • Шаблон списка управляет списком с именем object_list .
  • Детальный шаблон управляет объектом с именем object .

Больше опций можно задать через info_dict , включая значение paginate_by , которое определяет число объектов на странице.

Заключение

Следующая статья этого выпуска будет рассматривать TurboGears, другую среду Web-разработки на языке Python, и будет сравнивать его с Django.

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

Похожие темы

  • Оригинал статьи Python Web frameworks, Part 1: Develop for the Web with Django and Python.
  • Читайте обзор MVC-архитектуры в Wikipedia.
  • «Скоростное создание Web-приложений с Ruby on Rails (Fast-track your Web apps with Ruby on Rails)» (developerWorks, июнь 2005 г.) показывает то, как Ruby on Rails создает Web-приложения.
  • Python.org является домашней страницей языка программирования Python, где вы можете найти ссылки для скачивния интерпретатора языка Python и стандартные библиотеки.
  • Руководство по языку Python поможет вам освоиться с языком Python.
  • DjangoProject.com является домашней страницей среды разработки Django.В документацию входит:
    • Как устанавливать Django (How to install Django), где показано, как настраивать Django на машине разработчика
    • Справочник по интерфейсу API базы данных (Database API reference), руководство по использованию ORM-библиотеки в Django
    • Язык шаблонов в Django (Django template language), простое руководство для программистов
    • Как обслуживать статичные файлы (How to serve static files), представляет, как настраивать Django, чтобы обслуживать статичные файлы во время разработки (не делайте этого при выпуске продукта)
    • Как использовать Django с mod_python (How to use Django with mod_python), руководство по комбинированию Django с Apache с помощью модуля mod_python
    • Универсальные виды (Generic views), где показано, как выполнять обычные образцы Web-приложений на много быстрее с помощью универсальных видов в Django
  • Пакеты создания и распространения с инструметами установки (Building and Distributing Packages with setuptools) показывают как устанавливать setuptools вместе с easy_install , как часть пакета Python Eggs.
  • Подсказки по производительности Django (Django performance tips) показывают, как исправлять проблемы с трафиком с помощью Django.
  • На сайте developerWorks в разделе Linux вы можете найти больше источников для Linux-разработчиков.
  • Доступное пробное ПО IBM для скачивания прямо с сайта developerWorks, чтобы вы могли создавать следующие разработки под Linux.


Комментарии

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

Flask или Django? Выбираем Python вебфреймворк

Flask или Django?

Согласно данным опроса разработчиков Python в 2020, Django и Flask являются самыми популярными веб фреймворками среди разработчиков. Вы вряд ли ошибетесь, выбрав один из этих фреймворков для работы с вашим новым веб приложением. Хотя выбор того, какой из них будет лучше работать для вас и ваших целей, есть ряд явных отличий, которые нужно иметь в виду, перед тем как сделать выбор.

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

Разница между Flask и Django

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

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

  • Объект Request — Flask использует локальные потоки, а Django передает запрос там, где это нужно.
  • Формы — Django доступен со встроенными формами, которые интегрируются с ORM и админкой сайта. Flask не поддерживает формы по умолчанию, но вы можете использовать WTForms, чтобы заполнить этот пробел.
  • Базы данных — Django доступен со встроенной ORM и системой миграции, которая может управлять базами данных. Flask не может этим похвастаться, однако есть инструменты, такие как SQLAlchemy, которые предоставляют аналогичный функционал (или даже больше).
  • Аутентификация и привилегии пользователям — Django предоставляет приложение аутентификации, которое предоставляет реализацию по умолчанию для пользовательского управления и привилегий. Flask предоставляет безопасные куки в качестве инструмента вашей собственной реализации.
  • Панель администратора — Django включает в себя полностью интегрированный админ-интерфейс для управления данными приложения. Flask не имеет таких функций, но Flask-Admin — очень популярное расширение, которое можно использовать для создания аналогичного административного инструмента.
Цукерберг рекомендует:  Мы в клубе «Mail.Ru для бизнеса»!

Что такое Django?

На сайте Django утверждают, что “Django упрощает создание веб-приложений, делает это быстрее, используя меньше кода”, и называют Django “веб-фреймворк для перфекционистов с дедлайнами”. Действительно, Django — это взрослый фреймворк, который (по-умолчанию) делает множество решений самостоятельно, так что у пользователя в распоряжении инструмент для создания типичных веб приложений.

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

Какие компании используют Django?

  • Instagram
  • Pinterest
  • Udemy
  • Coursera
  • Zapier

Что такое Flask?

На сайте Flask его описывают как “микрофреймворк для Python, основанный на Werkzeug, Jinja 2 и отличных решениях” и “веб-разработка, по капле за раз”. Еще раз, это дает вам хорошее представление о пространстве, которым Flask пытается заполнить переполненный мир веб-фреймворков Python.

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

Какие компании используют Flask

  • Netflix
  • Lyft
  • Reddit
  • Zillow
  • MailGun

Сходства и различия между Flask и Django

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

Среда разработки веб приложений на Python

Сервер разработки

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

Утилиты командной строки

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

Установка и запуск простейшего приложения

Чтобы просмотреть это видео, включите JavaScript и используйте веб-браузер, который поддерживает видео в формате HTML5

Создание Web-сервисов на Python

Half Faded Star

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

Рецензии

Half Faded Star

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

Как я изучал(изучаю фреймворк Django). Личный опыт.

Все что далее, — мой личный опыт изучения фреймворка Django. Может быть пригодится таким же новичкам в программировании как и я.

Что нужно знать (необходимый МИНИМУМ) относительно Python:

-Ввод и вывод данных

-Функции и рекурсия

-Работа с модулями и функциями (создание, импортирование, вызов. )

-Основы регулярных выражений

В настоящее время, актуальной версией является Django 2.0. Но я советую начать изучение с версии 1.11. Почему именно так:

1. По Django 2.0 мало различных материалов на русском языке. Для 1.11 материалов достаточно.

2. Django 2.0 и 1.11 очень похожи, но в 2.0 сделали упрощённый синтаксис маршрутизации URL. Из-за этого могут возникнуть сложности на начальном этапе, если пытаться обучаться по материалам основанным на 1.11 версии.

3. Большинство готовых приложений и расширений до сих пор поддерживают только 1.11 версию и не поддерживают 2.

4. Расширенная поддержка версии 1.11LTS заканчивается в 2020 году, а 2.2LTS пока не видно.

Итак, расскажу как изучал я. Может быть кому-нибудь покажется полезной данная информация.

I. -НАЧАЛО («копипастим» свой первый проект):

-понять как работает фреймворк(установка, как создается проект, архитектура, как взаимодействуют его основные компоненты — urls, модели, шаблоны, views)

1. Проходим туториал на Django-girls.

Шаг за шагом копипастим и пытаемся понять что вообще происходит.

-Основы работы в консоли Linux

-Создание и работа в виртуальном окружении Python.

-Основы основ Django (urls, модели, шаблоны, views)

Альтернативный вариант (более короткий):

Учебник официальная документация (docs.djangoproject.com/en/1.11 — раздел FirstSteps). Или перевод документации с портала djbook.ru

Версия 1.9 а не 1.11, но в этом нет ничего страшного.

2. Цикл лекций «Web-технологии. Разработка на DJANGO» от Mail.ru

Если не интересны основы-основ про web-разработку (уже знаете или задача быстро освоить Django), тогда начинаем смотреть с «9. Web-технологии. MVC фреймворки | Технострим» и дальше.

-Архитектуре и принципам взаимодействия компонентов, основам Django

3. Книга «Django: практика создания Web-сайтов на Python» Владимир Александрович Дронов:

ссылка: сами кУпите или найдёте.

Читаем главы с 1 по 7. Главу 2 опционально можете пропустить, если знакомы с основами Python.

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

-Пониманию основ MVC

-Через примеры кода начнет приходить понимание, как все работает.

-Через копипасту проекта в общем виде начали понимать как все устроено и работает

-Через лекции MAIL.ru узнали как работают web-приложения, как выглядит архитектура типичного web-приложения(взаимодействие бекенда-фронтэнда, работа протоколов, общая архитектура), узнали место Django в этой архитектуре

-Через книгу более детально познакомились с паттерном проектирования MVC (что такое модель, контроллер, представление), через примеры кода начали понимать как это может работать.

II. ПРОДОЛЖЕНИЕ НАЧАЛА(продолжаем «копипастить»):

1. Ищем курс «iTBursa Python&Django». Продажу курса уже закрыли (скорее всего видимо потому, что курс попал в открытый доступ). В курсе есть основы Python и Django. Плюсом идут основы: html/css, bootstrap web, http, databases, linux, shell, git/github, nginx, deployment.

Продолжаем копипастить уже по этому курсу, но теперь самостоятельно выполняем «Контрольные задания»(или не выполняем). В принципе этот курс мог бы заменить все вышеперечисленное. Но так как каждый человек воспринимает информацию по разному, ИМХО лучше усвоится информация, полученная из разных (по типу и виду подачи информации) источников.

Дополнительно: курс itvdn-Django от Антона Мазуна

2. Продолжаем читать и перечитывать Дронова

3. Изучаем официальную документацию или перевод документации 1.9(djbook.ru)

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

II. КОНЦА НЕ ВИДНО(создаём свой собственный проект):


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

Теперь отправляемся в свободное плавание на просторы интернета. Теперь уже сами ищем статьи, видео, гайды, бестпрактис. Продолжаем читать Дронова и переходим на актуальную версию Django 2.x

Дополнительно можно начать читать:

-Django подробное руководство. Адриан Головатый. Джейкоб Каплан-Мосс. Книга очень старая (2010), многое изменилось, но общие принципы остались те же.

-Tango with Django. Многие советуют эту книгу.

Вот ещё парочка:

-Web Development with Django cookbook

Извиняюсь за возможные орфографические, и в особенности, за пунктуационные ошибки.

ЗЫ. Кстати, в комментах к моему предыдущему посту (Моя история: опыт изучения программирования) и по почте многие высказывали мысль о создании канала в Телеграмм по данной тематике. Такой канал я создал. Не знаю можно ли ссылку(или нет). Называется python_noobs(PythonNoobs). Сейчас там 12 человек(в основном пикабушники с предыдущего поста — всем кому рассылал свою подборку материалов). Создан чисто для новичков. На канале обмениваемся опытом изучение Python и смежных технологий, делимся ссылками на полезные материалы(статьи, видео, гайды, курсы. ), собираем команду для совместных проектов и просто общаемся, чтобы не прокрастинировать :)

Django: Практика создания Web-сайтов на Python. Владимир Дронов

Книга посвящена разработке Web-сайтов на популярном языке программирования Python с использованием библиотеки Django. Описывается создание моделей, контроллеров и шаблонов, применение форм для ввода данных и выгрузки на сайт файлов, реализация разграничения доступа, комментирование кода, работа со статичными страницами, применение сторонних библиотек для вывода миниатюр. Рассказывается о форматировании текста тегами BBCode, привязке к позициям тегов и выполнении поиска по тегам. Рассматриваются инструменты для генерирования каналов новостей RSS и Atom, рассылки электронной почты и настройка встроенного административного сайта Django под свои нужды. Детально описывается процесс разработки и публикации полнофункционального коммерческого Web-сайта, использующего, в том числе, технологию AJAX. Все исходные коды доступны для загрузки с сайта издательства.

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

Python для Web

Создаём сайт на Django, используя хорошие практики. Часть 1: создаём django-проект

Я начинаю серию статей, посвященных разработке сайтов на Django. Информация для этих статей получена из собственного опыта (полтора года коммерческой разработки на Django, несколько мелких фриланс-проектов, часть проекта pythonworld.ru написана на Django).

Настраиваем Django + virtualenv + nginx + gunicorn + PostgreSQL + memcached + letsencrypt на Ubuntu 16.04

В данной статье я опишу процесс настройки связки Django + virtualenv + nginx + gunicorn + PostgreSQL + memcached + letsencrypt на Ubuntu 16.04 на VPS DigitalOcean для своего форума https://pythonworld.club.

CGI: пишем простой сайт на Python. Часть 4: Публикация в сети Интернет

В первых трёх частях мы написали более-менее работающее приложение и запустили его на локальном сервере.

Остаётся самый важный вопрос: «Как это заставить работать на сайте»? На него я постараюсь дать ответ в четвёртой части.

CGI: пишем простой сайт на Python. Часть 3: Пример приложения

Мы уже научились обрабатывать формы и устанавливать cookies. Сегодня же мы посмотрим, что может из этого получиться.

Чтобы работать с пользовательскими данными, нужно где-то эти данные сохранять. Самый простой (но далеко не самый изящный и безопасный) — хранение данных в файлах. Более продвинутый способ — хранение в базе данных. Мы остановимся на первом способе, как на самом простом.

CGI: пишем простой сайт на Python. Часть 2: Обработка форм, cookies

В первой части мы написали Hello world. Сегодня мы рассмотрим несколько более сложные вещи: обработку данных форм и cookies.

CGI: пишем простой сайт на Python. Часть 1: Hello world

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

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

Django — фреймворк на Python

Django — это про­грамм­ный кар­кас с бога­тыми воз­мож­но­стя­ми, под­хо­дя­щий для раз­ра­ботки слож­ных сай­тов и веб-при ­ло­же­ний, напи­сан­ный на языке про­грам­ми­ро­ва­ния Python.

Django — фрейм­ворк для веб-при ­ло­же­ний на языке Python. Один из основ­ных прин­ци­пов фрейм­ворка — DRY (don’t repeat yourself). Веб-системы на Django стро­ятся из одного или несколь­ких при­ло­же­ний, кото­рые реко­мен­ду­ется делать отчуж­да­е­мыми и под­клю­ча­е­мы­ми. Это одно из замет­ных архи­тек­тур­ных отли­чий этого фрейм­ворка от неко­то­рых дру­гих (напри­мер, Ruby on Rails). Также, в отли­чие от мно­гих дру­гих фрейм­вор­ков, обра­бот­чики URL в Django кон­фи­гу­ри­ру­ются явно (при помощи регу­ляр­ных выра­же­ний), а не авто­ма­ти­че­ски зада­ются из струк­туры кон­трол­ле­ров.

Django про­ек­ти­ро­вался для работы под управ­ле­нием Apache (с моду­лем mod_python) и с использованием PostgreSQL в каче­стве базы дан­ных. В насто­я­щее вре­мя, помимо PostgreSQL, Django может рабо­тать с дру­гими СУБД: MySQL (MariaDB), SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere и Oracle. Для работы с базой дан­ных Django исполь­зует соб­ствен­ный ORM, в кото­ром модель дан­ных опи­сы­ва­ется клас­сами Python, и по ней гене­ри­ру­ется схема базы дан­ных.

Цукерберг рекомендует:  Html - Помогите разобраться с html и не только

Архи­тек­тура Django похожа на « Модель-Пред ­став­ле­ ние-Кон ­трол­лер» (MVC). Кон­трол­лер клас­си­че­ской модели MVC при­мерно соот­вет­ствует уров­ню, кото­рый в Django назы­ва­ется Пред­став­ле­ние (View), а пре­зен­та­ци­он­ная логика Пред­став­ле­ния реа­ли­зу­ется в Django уров­нем Шаб­ло­нов (Templates). Из-за этого уров­не­вую архи­тек­туру Django часто назы­вают « Модель-Шаб ­ лон-Пред ­став­ле­ние» (MTV).

Пер­во­на­чально раз­ра­ботка Django велась для обес­пе­че­ния более удобной работы с новост­ными ресур­са­ми, что доста­точно сильно отра­зи­лось на архи­тек­ту­ре: фрейм­ворк предо­став­ляет ряд сред­ств, кото­рые помо­гают в быст­рой раз­ра­ботке веб-сай ­тов инфор­ма­ци­он­ного харак­те­ра. Напри­мер, раз­ра­бот­чику не тре­бу­ется созда­вать кон­трол­леры и стра­ницы для адми­ни­стра­тив­ной части сай­та, в Django есть встро­ен­ное при­ло­же­ние для управ­ле­ния содер­жи­мым, кото­рое можно вклю­чить в любой сайт, сде­лан­ный на Django, и кото­рое может управ­лять сразу несколь­кими сай­тами на одном сер­ве­ре. Адми­ни­стра­тив­ное при­ло­же­ние поз­во­ляет созда­вать, изме­нять и уда­лять любые объ­екты напол­не­ния сай­та, про­то­ко­ли­руя все совер­шён­ные дей­ствия, и предо­став­ляет интер­фейс для управ­ле­ния поль­зо­ва­те­лями и груп­пами (с пообъ­ект­ным назна­че­нием прав).

Веб-фрейм ­ворк Django исполь­зуется в таких круп­ных и извест­ных сай­тах, как Instagram, Disqus, Mozilla, The Washington Times, Pinterest, lamoda и др.

Некото­рые воз­мож­но­сти Django:

  • ORM, API доступа к БД с под­держ­кой тран­зак­ций
  • встро­ен­ный интер­фейс адми­ни­стра­то­ра, с уже име­ю­щи­мися пере­во­дами на мно­гие языки
  • дис­пет­чер URL на основе регу­ляр­ных выра­же­ний
  • рас­ши­ря­е­мая система шаб­ло­нов с тегами и насле­до­ва­нием
  • система кеши­ро­ва­ния
  • интер­на­ци­о­на­ли­за­ция
  • под­клю­ча­е­мая архи­тек­тура при­ло­же­ний, кото­рые можно уста­нав­ли­вать на любые Django-сайты
  • «generic views» — шаб­лоны функ­ций кон­трол­ле­ров
  • авто­ри­за­ция и аутен­ти­фи­ка­ция, под­клю­че­ние внеш­них моду­лей аутен­ти­фи­ка­ции: LDAP, OpenID и про­чие.
  • система филь­тров («middleware») для постро­е­ния допол­ни­тель­ных обра­бот­чи­ков запро­сов, как напри­мер вклю­чён­ные в дис­три­бу­тив филь­тры для кеши­ро­ва­ния, сжа­тия, нор­ма­ли­за­ции URL и под­держки ано­ним­ных сес­сий
  • биб­лио­тека для работы с фор­мами (насле­до­ва­ние, постро­е­ние форм по суще­ству­ю­щей модели БД)
  • встро­ен­ная авто­ма­ти­че­ская доку­мен­та­ция по тегам шаб­ло­нов и моде­лям дан­ных, доступ­ная через адми­ни­стра­тив­ное при­ло­же­ние

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

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

Django создание простого блога с нуля

Я расскажу о там, как создать простой блог на фреймворке Django. Статья будет полезна новичкам в сфере Веб-программирования для того, чтобы разобраться в принципе работы и сути django. И так, поехали!

Проект написан с использованием:

Python 3.6.3 — высокоуровневый язык программирования.

Django 2.0.2 — фреймворк для веб-приложений.

Visual Code — текстовый редактор c поддержкой плагинов

Установка Python

Перед началом работы вам необходимо установить Python для дальнейшей работы с django. Для этого переходим на официальный сайт, скачиваем дистрибутив и устанавливаем его (как обычное приложение), поставив галочку напротив «Add Python to the PATH» (Добавить Python к системной переменной PATH). Если все сделано верно, то прописав в консоли (WIN + R > cmd) python, вы увидите следующее:

Для выхода пропишите exit().

Установка Django

Django установим с помощью менеджера пакетов Python — pip:

Создание проекта

Для начала создадим папку для проекта в любом удобном месте и назовем ее «djangoProject». Далее Скопируем адрес этой папки и откроем консоль (WIN + R > cmd).

В консоли перейдем в созданную ранее папку. В моем случае папка находится на другом диске, поэтому сначала следует перейти на него — «d:»

Создадим django проект с произвольным именем «myBlog»

Перейдем в созданную папку и откроем ее в каком-либо текстовом редакторе. Я использую Visual code и запускаю его с помощью команды «code .»

Ненадолго отложим редактор и запустим стандартный проект django (при выполнении команд с обращением к файлу manage.py, например, запуск сервера вы должны находится в непосредственно в папке с этим файлом. В данном случае это D:\djangoProject\myBlog)

Откроем страницу в браузере по адресу http://127.0.0.1:8000/

Ура! Все работает. Теперь создадим аккаунт администратора, с помощью которого вы сможете добавлять, редактировать и удалять статьи (это конечно не все возможности админки django, но пока их будет достаточно).

Завершим работу запущенного сервера:

Для начала необходимо поработать с миграциями. Миграции в django используются для переноса изменений в моделях на структуру базы данных. Модели в свою очередь отражают данные в виде полей в таблице базы данных. В нашем случае в базу данных необходимо занести таблицы для хранения данных админа.

Нам будет предложено ввести логин, e-mail почту и пароль.

Логин для удобства введем admin, почту можно не вводить и пароль (мин. 8 символов). Будьте внимательны, вводимые символы пароля в консоли никак не отображаются (в целях безопасности).

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

Зайдем на страницу по адресу 127.0.0.1:8000/admin. Вводим логин и пароль от админки и жмем «Log in».

В итоге откроется админ панель:

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

Для этого завершим работу сервера (Ctrl + C) и пропишем следующую команду:

Где «blog» — это произвольное название приложения. В итоге в директории djangoProject/myBlog появился новый каталог с именем «blog» и некоторыми .py файлами.

Далее нужно дать понять Django, что нужно использовать в работе наше новое приложение «blog». Для этого в файле settings.py с расположением djangoProject/myBlog/myBlog/settings.py изменяем настройку INSTALLED_APPS следующим образом:

Поработаем с обработкой url-запросов. Нам необходимо, чтобы при запросе 127.0.0.1:8000 открывалась главная страница со списком всех статей.

Отредактируем файл djangoProject/myBlog/myBlog/urls.py следующим образом:

Если говорить простым языком, то Django сравнивает url-запрос с данными в urlpatterns. Т.е. открыв страницу с адресом 127.0.0.1:8000/ django выполнит строку path(», include(‘blog.urls’)). На основе которой будет «читать» файл по адресу djangoProject/myBlog/blog/urls.py. Создадим и отредактируем этот файл:

Здесь идет переход «чтения» в файл views.py (в этой же папке), в котором используется функция home

С помощью функции render выполняем шаблон home.html. Для этого создаем в папке djangoProject/myBlog новую с именем «templates». В этой папке будут храниться все требуемые шаблоны страниц (главная, шаблон подробного просмотра статьи).

И редактируем в файле djangoProject/myBlog/myBlog/settings.py настройку TEMPLATES:

В созданной папке templates создаем файл base.html:

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

Создадим в папке djangoProject/myBlog/templates новую папку partial, в которой и будут находится .html файлы, расширяющие базовый.

В папке partial создадим файл home.html:

При обращении к файлу home.html содержимое блоков head и body в файле base.html заменится содержимым файла home.html. такая система организации шаблонов добавляет динамику и в разы упрощает работу.

Теперь запустив сервер откроется не стандартная страница django, а наш файл base.html, расширенный файлом partial/home.html

Точно таким же способом добавим страницу для просмотра отдельной статьи, которую назовем partial/single.html:

Отредактируем файл djangoProject/myBlog/blog/urls.py, где — указывает, что на этом месте может располагаться число, которое будет считываться в файле djangoProject/myBlog/blog/views в функции single. Это число будет использоваться как номер определенной статьи.

В файле djangoProject/myBlog/blog/views.py добавим новую функцию для вывода отдельной статьи

Создаем шаблон для вывода отдельной статьи djangoProject/myBlog/templates/partial/single.html

Теперь после запуска сервера и переходе по ссылке 127.0.0.1:8000/323 откроется нужная страница.

Создадим таблицу в базе данных с помощью моделей. Каждая статья будет содержать следующие поля:

  1. Название статьи
  2. Описание статьи (для метатега description)
  3. Ключевые слова (для метатега keywords)
  4. Изображение
  5. Текст статьи
  6. Параметр видимости статьи (для сохранения статьи без её публикации)
  7. Дата изменения
  8. Дата создания

Для отображения нашей модели статьи в админ панели отредактируем файл djangoProject\myBlog\blog\admin.py, где list_display — поля, отображающиеся в списке статей; list_display_links — поля, являющиеся ссылками для подробного просмотра полей статьи; list_editable — поля, доступные для редактирования сразу из просмотра списка всех статей; list_filter — фильтры в правой части страницы; search_fields — поля по которым осуществляется поиск.

Укажем папку для сохранения загружаемых изображений (поле image) и паку для хранения статических файлов (например, css файлы, js срипты). Для этого добавим в конце файла djangoProject\myBlog\settings.py следующие 3 строчки

И создадим эти папки со следующим расположением: djangoProject/media и djangoProject/static

Помимо сохранения изображений через админ панель необходимо корректно их загружать в шаблон. Для этого отредактируем файл djangoProject\myBlog\views.py

Заходим в админ панель — 127.0.0.1:8000/admin > переходим в Posts > add Post (в верхнем правом углу). Заполняем текстовые поля, загружаем изображение и оставляем галочку напротив visible (т.е. не скрывать статью). Нажимаем SAVE. Статья добавлена, изображение сохранилось в папку djangoProject/media

Настало время для вывода статей в шаблон home, т.е. на главную страницу.

Про книгу “Django. Разработка веб-приложений на Python”

Помните, недавно я писал о том, что выходит книга про веб-программирование на Python и Django? Так вот, я ее дочитал, оказалась очень хорошей книгой, очень она мне понравилась.

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

Особенно понравилась манера изложения. Авторы в каждой главе книги умудряются не только рассказать как работает Django, но и заодно сделать какое-то сравнительно полезное веб-приложение. Благодаря этому становится понятно и как работает Django, и как это можно использовать. При этом авторы не обращают особого внимания на оформление создаваемого сайта, поэтому приводимый код остается довольно коротким и наглядным.

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

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

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

А завершает все несколько приложений, которые я тоже с пользой для себя прочитал (обычно приложения я как-то пропускаю). В приложения попали:

  • Краткая справка по использованию консоли в Unix.
  • Установка Django и связь его с Apache (очень полезное приложение, странно, что оно не сделано в виде полноценной главы).
  • Очень коротко описаны разные системы контроля версий и чуть более подробно (но буквально на несколько страницах) написано про Mercurial.
  • Приведены ссылки на сайты, где можно найти готовые библиотеки для Python и Django. Надо сказать, что и в самой книге авторы не брезгуют использовать сторонние библиотеки, что тоже может быть полезным.
  • Использование Google Apps Engine и что общего между ним и Django (благодаря этому приложению пока еще не дочитал книгу попробовал в деле Google Apps Engine).

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

А теперь небольшой оффтопик. Раньше, когда делал себе сайт на PHP (особенно до того как стал использовать готовые движки pmWiki и WordPress), то думал, что веб-программирование мне не нравится само по себе, PHP наводило какое-то уныние. А вот на Python мне веб-программирование понравилось, а тут как раз два повода появилось, чтобы проверить это на практике.

Первый повод — это голосование для сообщества ljournalist , которое как раз и сделал на движке Google Apps Engine. Кстати, у сообщества этого завтра выходит 1000-й выпуск.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих