Django — Помогите пожалуйста с PythonDjango


Содержание

Создаем свое первое веб-приложение при помощи Django

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

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

Устанавливаем Django

Делается это очень просто, в командной строке нужно написать: pip install Django==1.9.1 .

Создаем проект

Если вы правильно установили Django, то после запуска django-admin —version вы увидите текущую версию фреймворка. Теперь создадим проект. Это можно сделать следующим образом: django-admin startproject django_example .

Как только создание проекта будет завершено, взглянем на директорию нашего проекта:

  • django_example/__init__.py — пустой файл, который говорит Python, что данная директория должна восприниматься в качестве пакета.
  • django_example/settings.py содержит конфигурацию нашего проекта.
  • django_example/urls.py — здесь объявляются URL.
  • django_example/wsgi.py — с помощью него приложение может работать с веб-сервером по протоколу WSGI.
  • manage.py позволяет взаимодействовать с проектом.

Теперь пришло время запустить наше приложение. Для этого в командной строке нужно написать python manage.py runserver . После этого в адресной строке браузера нужно написать: http://127.0.0.1:8000/ . Если вы увидели «You have unapplied migrations; your app may not work properly until they are applied.», то не волнуйтесь, мы вернемся к этому чуть позже.

Создаем приложение

Определим различие между проектом и приложением. Приложение — это программа, которая что-то делает, а проект — это группа приложений.

Итак, приступим к созданию приложения. Это делается следующим образом: python manage.py startapp riddles .
Как только приложение создано, давайте напишем простой вид, по правилам Django все виды должны храниться в файле views.py .

Теперь, чтобы привязать наш вид к URL, создадим файл urls.py .

В urls.py мы должны написать следующее:

Теперь, если мы запустим наше приложение http://127.0.0.1:8000/riddles/ , мы увидим «Hello, World!».

Установка базы данных

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

4 октября 2020 – 1 марта 2020, Москва и онлайн, беcплатно

Теперь откроем django_example/settings.py и взглянем на переменную INSTALLED_APPS , она хранит все приложения, которые активны в текущем проекте. По умолчанию она содержит:

  • django.contrib.admin — админка, скоро мы ей воспользуемся.
  • django.contrib.auth — система аутентификации.
  • django.contrib.contenttypes — фреймворк для content types.
  • django.contrib.sessions — сессионный фреймворк.
  • django.contrib.messages — фреймворк для отправки сообщений.
  • django.contrib.staticfiles — фреймворк для работы со статичными файлами.

Некоторые из этих приложений используют базы данных, но они еще не установлены, поэтому мы и видели «You have unapplied migrations; your app may not work properly until they are applied.». Поправить это можно следующим образом: python manage.py migrate . Вы должны увидеть следующее:

Теперь создадим нашу модель. Для начала создадим Riddle и Option . В Riddle будет содержаться загадка, в Option — один из возможных ответов на нее.

Данная модель обеспечивает Django информацией, необходимой для создания схемы базы данных и database-access API для доступа к объектам. Теперь нам нужно привязать наше приложение к нашему проекту, делается это следующим образом:

После этого нужно сделать миграцию: python manage.py makemigrations riddles . Вы должны увидеть следующее:

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

Проверить, что сделает миграция, можно так: python manage.py sqlmigrate riddles 0001 (0001 — версия миграции, которую мы хотим проверить). На выходе мы получим:

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

Теперь мы можем начать пользоваться панелью администратора. Но для этого нам нужен пользователь. Создать его можно следующим образом: python manage.py createsuperuser . После этого запускаем сервер, если он не запущен, и переходим на http://127.0.0.1:8000/admin/ . Вы увидите следующее:

Теперь дадим админу возможность изменять наши модели. Делается это так:

Вот что получится в итоге:

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

Главная страница

Что нам нужно для создания главной страницы?

  • Templates: скелет нашей страницы.
  • Views: функция на Python для отображения контента.

Начнем с шаблонов. Создадим папку templates внутри папки riddle , а в ней создадим index.html .

Теперь создадим макет для ответов:

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

Давайте пройдемся по каждой функции отдельно:

  • index: Index использует функцию render . На вход она получает HttpRequest, местонахождение шаблона и его содержимое, а возвращает HttpResponse с окончательным html.
  • detail: Detail делает практически то же самое, но только функция get_object_or_404 возвращает HttpResponse404, если нужный объект не был найден.
  • answer: Answer ищет предоставленную загадку (и возвращает 404, если она не найдена) и проверяет правильность ответа.

Теперь добавим наши функции в urls.py :

Добавим немного стилей

Для начала создадим директорию static , а в ней создадим файл main.css .

Немного изменим наши шаблоны:

Первая строка загружает статические файлы, потом мы используем <% static '#' %>, где # — путь к вашему файлу. Аналогичная процедура проводится и для JavaScript.

Теперь вы можете создавать свои собственные приложения на Django.

Исходный код нашего приложения можно скачать по этой ссылке.

Часть 1. Python/Django и Hello World. Запуск тестового сайта на Python/Django под OS Windows.

�� 1 237 просмотров

Django — это MVC/MTV — фреймворк, написанный на языке Python, а Python — высокоуровневый язык для всех повседневных задач на любой платформе и имеет интерпретаторы для всех известных ОС, есть даже реализация для запуска поверх Java — машины, которая именуется , как Jython.

О чем будет статья?

В статье затронем моменты установки интерпретатора Python 3.x и Django на Windows, в целях запуска тестового сайта на Python на ОС Windows. Обычно, при разработке проекта приходиться писать код на десктопе, чем и служит для нас Windows, а конечный вариант грузить на сервер, где правит только командная строка Linux — системы.

Установка Python и PIP на Windows

Для установки переходим на официальный сайт разработчика. Наводим курсором на раздел «Downloads» и видим всплывающее табло

На момент написания данной статьи поддерживаются 2 версии языка — 2.x и 3.x. Так как на версии 2.x написано очень много проектов и версии языка отличаются друг от друга кардинально, то поддерживаются обе версии, но в новых проектах предпочтительнее использовать последнюю версию языка — 3.x. Загружаем и кликаем для установки. Установка Python 3.x идет стандартным образом

На начальном этапе установки необходимо указать, что мы хотим добавить нашу программу в переменную среду Windows, чтобы выполнять команды Python через командную строку. Если данный пункт отсутствует на интсалляторе, то придется добавить вручную через панель настроек Windows, прописав через «;» путь установки Python для переменной PATH. Инсталлятор предлагает по умолчанию установить Python в папку пользователя системы. Нажмем пользовательский режим, оставляем все, как есть и принимаем во внимание, что pip устанавливается в процессе инсталляции Python и если в инсталляторе его нет, придется установить после установки Python.

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

Жмем «Next» и меняем место установки. Можно установить в любое удобное место — все на вкус и удобство пользователя. Жмем «Install» и заканчиваем установку.

Если в командной строке выскакивает сообщение, что есть более новая версия pip и, вместе с инсталлятором установилась старая версия, то проблему решит апгрейд pip через команду:

Если pip не установлен при инсталляции, то давайте разберем другой способ установки pip. Другой способ установки инструмента pip — скачиваем этот инструмент get-pip.py с официального сайта и запускаем этот файл через командную строку

После установки надо добавить переменную C:\PythonServer\Lib\site-packages\django\bin в PATH к уже имеющимся переменным Python, которые были добавлены автоматически инсталлятором

Установка Django в виртуальной среде Windows

После того, как Python и pip установлены и настроены переменные среды, необходимо установить пакеты Django. Есть несколько способов установки Django. В данной статье будем пользоваться рекомендованным методом установки официального релиза Django.

Ниже показан рекомендованный метод установки Django от разработчиков этого фреймворка:

  1. Установка через pip. Так как pip был установлен через автономный инсталлятор, то необходимо проверить на то, что он имеет последнюю, актуальную версию, иначе это может быть причиной сбоя установки.
  2. Использование virtualenv и virtualenvwrapper. Эти инструменты предоставляют изолированные среды Python, которые являются более практичными, чем устанавливаемые пакеты в системе. Они , также, позволяют устанавливать пакеты без привилегий администратора. Здесь дополнительная информация по созданию и использованию virtualenv на Python 3.
  3. После создания и активации виртуальной среды, нужно установить Django через команду

Теперь необходимо выполнить каждый из вышеизложенных шагов последовательно.

  1. Так как pip был у нас установлен в процессе инсталляции, то пропускаем этот шаг.
  2. Устанавливаем виртуальную среду через установщик pip при помощи последовательности команд:

и проверяем версию установленного virtualenv:

Итак, в предыдущем шаге мы установили инструмент для создания виртуальных сред Python. Настал момент создания виртуальной среды. Виртуальную среду можно создать в любом месте. Для нашего примера создадим в корневой папке Python C:\PythonServer\ новую папку Environments, в которой будут создаваться наши новые среды. Теперь в этой папке создадим новую виртуальную среду под названием «sites» и для этого, через командную строку заходим в папку C:\PythonServer\Environments и выполняем команду:

И после того, когда виртуальная среда создана, через командную строку заходим в папку созданной виртуальной среды:

и активируем эту среду при помощи команды:

и выполняем команду:

которая вернет версию скрипта

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

После того, как создали виртуальную среду и активировали нам необходимо установить в эту виртуальную среду фреймворк Django:

Далее заходим в папку нашей среды и устанавливаем через .\Scripts\django-admin.py исходники нашего проекта через команду:

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

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

или, то же самое можно сделать командой:

Для запуска проекта переходим в папку нашего проекта выполняем команду запуска сервера при помощи файла manage.py:

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

На этом установка Python и тестового сервера с Django завершена.

Установка Django

Примечание: если ты используешь Chromebook, пропусти эту главу, но выполни инструкции по настройке для Chromebook

Примечание: если ты уже выполнила установку — можешь пропустить эту часть и сразу перейти к следующей главе!

Отдельные части этой главы основаны на учебных пособиях Geek Girls Carrots (https://github.com/ggcarrots/django-carrots).

Отдельные части этой главы основаны на учебном пособии django-marcador, лицензированном под Creative Commons Attribution-ShareAlike 4.0 International License. Руководство django-marcador защищено авторским правом Markus Zapke-Gründemann et al.

Виртуальное окружение

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

Итак, давай создадим виртуальное окружение (оно также называется virtualenv). Virtualenv будет изолировать настройки Python/Django для каждого отдельного проекта. Это значит, что изменения одного сайта не затронут другие сайты, которые ты разрабатываешь. Удобно, правда?

Всё, что тебе нужно сделать — найти директорию, в которой мы создадим virtualenv ; домашний каталог вполне подойдёт. Для Windows адрес будет выглядеть так: C:\Users\Name (где Name — твоё имя пользователя).

Примечание: Если ты работаешь в Windows, удостоверься, что в названии директории нет специальных символов или символов с диакритическими знаками; если в твоём имени пользователя есть такие символы, выбери другую директорию, например, C:\djangogirls .

Мы будем использовать отдельную директорию djangogirls в домашнем каталоге:

Мы создадим виртуальное окружение под именем myvenv . В общем случае команда будет выглядеть так:

Чтобы создать новое virtualenv , тебе нужно открыть командную строку и набрать python -m venv myvenv . Это будет выглядеть так:

Здесь myvenv — имя твоего virtualenv . Ты можешь выбрать другое имя, но используй только строчные буквы, без пробелов и специальных символов. Имя виртуального окружения выбирай покороче — тебе придётся часто его набирать!

В Linux и OS X достаточно набрать python3 -m venv myvenv , чтобы создать virtualenv :

myvenv — имя виртуального окружения virtualenv . Можешь выбрать другое имя, но используй только строчные буквы и никаких пробелов. Имя виртуального окружения лучше выбирать покороче — набирать его предстоит не раз!

Примечание: В некоторых версиях Debian/Ubuntu может произойти следующая ошибка:

В таком случае следуй приведённым инструкциям и установи пакет python3-venv :

Примечание: В некоторых версиях Debian/Ubuntu при таком способе создания виртуального окружения ты можешь получить такую ошибку:

Чтобы обойти её, используй команду virtualenv .

Примечание: Если ты получаешь следующую ошибку

то запусти команду:

Работаем с virtualenv

Указанная выше команда создаст директорию myvenv (или другую, в зависимости от выбранного имени), которая будет содержать виртуальное окружение (по сути — набор файлов и папок).

Запусти виртуальное окружение, выполнив:

ПРИМЕЧАНИЕ: в Windows 10 при работе в Windows PowerShell ты можешь получить ошибку вида execution of scripts is disabled on this system . В этом случае открой ещё одно окно Windows PowerShell, выбрав опцию «Запустить от имени Администратора». Затем перед использованием виртуального окружения попробуй запустить следующую команду:

Запусти виртуальное окружение, выполнив:

Не забудь поменять myvenv на выбранное для virtualenv имя!

ПРИМЕЧАНИЕ: иногда команда source может быть недоступна. В таком случае используй следующий метод:

Ты поймёшь, что virtualenv запущено, когда увидишь префикс (myvenv) в начале приглашения командной строки.

При работе с виртуальным окружением команда python будет автоматически обращаться к правильной версии языка, так что ты можешь использовать просто python вместо python3 .

Отлично, теперь мы будем хранить все важные зависимости в одном месте. Наконец можно установить Django!

Установка Django

После запуска virtualenv ты можешь установить Django.

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

Установка библиотек через указание требований

Файл с требованиями (requirements) хранит список зависимостей, которые нужно установить с помощью pip install :

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

В файл djangogirls/requirements.txt нужно добавить такой текст:

Теперь выполни команду pip install -r requirements.txt , чтобы установить Django.

Если работая в Windows ты получаешь сообщение об ошибке при запуске pip, проверь, что путь к директории с проектом не содержит пробелов или специальных символов ( C:\Users\User Name\djangogirls ). Если проблема в этом, то, пожалуйста, перенеси свой проект в другое место, адрес которого не будет содержать пробелов и специальных символов (предлагаем C:\djangogirls ). Создай новое виртуальное окружение в новой директории, после этого удали старое и попробуй запустить команды выше заново (перемещение виртуального окружения не сработает, поскольку в нём используются абсолютные пути).

При попытке установки Django твоя командная строка может зависнуть. Если это произошло, вместо приведённой выше команды используй:

Вот и всё! Теперь ты (наконец-то) готова создать своё Django-приложение!

Django Book: первая страница Django-проекта — «Hello, World!»

Перевод. Оригинал тут>>>.

В статье Django: установка NGINX + uWSGI + Django на CentOS было рассказано как установить и запустить Django. В этой — мы рассмотрим создание динамических страниц с Django.

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

Первая страница

Для начала, давайте создадим страницу со знаменитым сообщением — «Hello world«.

Если вы раньше создавали такую страницу без использования веб-фреймворка, вы просто записывали строку «Hello world» в текстовый файл, называли его, например, hello.htm l, и загружали в какую-то директорию веб-сервера. Такой процесс создания веб-страницы имеет две основных состовляющих: её содержимое (строка «Hello world«), и URL (например — http://www.example.com/hello.html).

С Django надо выполнить практически то же, но немного другим образом. Содержимое страницы создаётся функцией представления (view function), а её URL указывается в URLconf -е. Для начала — давайте напишем нашу функцию представления «Hello world«.

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

Внутри директории, которая была создана при выполнении django-admin startproject создайте файл views.py . Это будет наш модуль Python, который будет хранить представления для этой статьи. Имя views.py не являетсяя каким-то особенным — для Django не имеет значения его имя, но будет хорошей идеей назвать его именно так, так как это имя модуля является общепринятым, и будет удобным для разработчиков, которым придётся сопровождать ваш код в будуем.

Содержимое нашего views.py очень простое:

Рассмотрим его шаг за шагом:

  • сначала мы импортируем класс HttpResponse , который находится в модуле django.http ;
  • затем мы создаём функцию-представление hello . Каждая такая функция должна принимать как минимум один аргумент — request . Это объект, который содержит информацию о текущем Web-запросе, который вызывал это представление, и он является экземпляром класса django.http.HttpRequest . В этом примере мы ничего не будем с ним делать, но тем не менее он должен быть. Имя функции не имеет значения. Мы назвали её hello только потому что это имя отображает суть этого представления, но её можно было так же назвать hello_wonderful_beautiful_world . Далее, в разделе « Первый URLconf «, станет понятно как именно Django использует эту функцию;
  • наша функция содержит только одну строку, которая возвращает объект HttpResponse , который был создан с тектом «Hello world«.

Выводы из первого урока: представление является простой функцией Python, которая принимает HttpRequest в качестве первого аргумента, и возвращает экземляр HttpResponse . Для того, что бы функция Python являлась представлением Django — она должна соответствовать этим двум правилам (есть исключения, но их мы рассмотрим позже).

Первый URLconf

Если сейчас вы запустите python manage.py runserver — вы всё ещё будете видеть стартовую страницу Django, без какого-либо упоминания о нашем «Hello, World«. Это происходит потому, что наш проект example ещё ничего не знает про представление hello , которое мы создали перед этим. Нам надо указать Django явным образом, что бы вызываем это представление при обращении к конкретному URL-у. Что бы связать функцию представления с конкретным URL-ом — используется модуль URLconf .

URLconf — это что-то вроде таблицы содержания вашего Django-сайта. В основном — он связывает URL-ы и функции представлений, которые должны быть вызваны для этих URL-ов. Именно так вы сообщаете Django, что «Для этого URL-а — вызови этот код, а для этого URL-а — этот код«. Например, когда кто-то открывает адрес /foo/ — вызывать функцию представления foo_view() , которая находится в модуле Python views.py .


Когда вы выполняете команду django-admin startproject — скрипт создаёт ваш URLconf автоматически — это файл urls.py . По умолчанию он выглядит так:

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

Примечание: для Django 1.8 URLConf должен выглядеть так:

Давайте построчно его рассмотрим:

  • в первой строке мы импортируем три функции из модуля django.conf.urls.defaults , которые являются системой URLconf : patterns , include и urls ;
  • во второй строке вызывается функция patterns , которая сохраняет результат в переменную urlpatterns . Функция patterns принимает только один аргумент — пустую строку (хотя в строке можно передавать некоторые прекфиксы для функций представления, но их мы рассмотрим позже).

Главное, что нам надо запомнить тут — это переменная urlpatterns , которую Django ожидает увидеть в вашем модуле URLconf . Эта переменная определяет связь между URL-ами, и кодом, который будет вызываться при обращении к конкретному адресу. Как мы видим, по умолчанию URLconf пустой — ваше Django-приложение находится в «пустом» состоянии (кстати, именно так Django определяет когда показывать страницу «Welcome to Django«: если URLconf пустой — Django предполагает что вы только начали работу над проектом, и поэтому её отображает.)

Что бы добавить новый URL и предсталение к вашему URLconf — просто добавьте связь между шаблоном URL и функцией представления. Вот как это будет выглядеть для нашего представления hello :

Мы сделали тут два изменения:

  1. первое — мы импортировали представление hello из модуля example/views.py , которое выглядит как example.views при использовании синтаксиса Python (т.е., предполагается, что файл views.py расположен в директории example , а путь example/views.py включён в пути поиска модулей Python, мы ещё расммотрим этот момент ниже);
  2. второе — мы добавили строку url(r’^hello/$’, hello) , к переменной urlpatterns . Функция url() указывает Django как обработать URL, который вы настраиваете. Первый аргумент — шаблон, регулярное выражение, описывающее URL, а второй аргумент — функция представления, которая будет вызвана для это шаблона. Функция url() может так же принмать некоторые дополнительные аргументы, их мы рассмотрим позже.

Примечание

Ещё одна важная деталь, которую мы видим в примерах выше — это символ r перед регулярным выражением. Таким образом мы сообщаем Python, что эта строка является «сырой» (raw) и обратные косые («») в ней не должны обрабатываться интерпретатором. В обычных Python-строках обратные косые используются для обозначения специальных символов, таких как « n » — символ новой строки. Когда вы добавляете символ r — Python не будет обрабатывать «», таким образом r’n’ будет двухсимвольной строкой, содержащей символ « » и символ « n «. Так как и в Python и в регулярных выражения используется символ обратной косой черты — рекомендуется использовать «сырые строки» каждый раз, когда вы определяете регулярное выражение в Python-е.

В двух словах — мы просто говорим Django, что все запросы к URL-у /hello/ должны быть обработаны функцией hello .

Python Path

Python path — это список директорий в вашей системе, в которых Python будет выполнять поиск модулей при использовании import .

Например, ваш Python path установлен как [», ‘/usr/lib/python2.7/site-packages’, ‘/home/username/djcode’] . Если вы выполние операцию from foo import bar — Python начнёт поиск модуля foo.py в текущей директории (пустой элемент в Python path обозначает текущий каталог). Если файла foo.py в нём не окажется — Python выполнит поиск в каталоге /usr/lib/python2.7/site-packages/ . Если же файла не окажется и там — будет выполнен поиск в /home/username/djcode/ . В конце-концов, если его не окажется и там — будет вызван ImportError .

Если вы хотите в точности узнать содержимое вашего Python path — запустите интерпретатор, и выполните следующее:

Как правило — вам не стоит беспокоиться про настройку вашего Python pathPython и Django сами позаботятся об этом (настройка Python path — одно из действий, которые выполняет скрипт manage.py ).

Стоит ещё обсудить синтаксис URLpattern , так как иногда он может быть не совсем очевидным. Хотя мы хотим получить URL /hello/ — сам шаблон поиска выглядит немного по-другому. И вот почему:

  • Django удаляет символы косой черты в каждом входящем URL перед проверкой URLpatterns . Это значит, что наш URLpatterns не включает в себя ведующую косую в /hello/ (на первый взгляд это может показаться непонятным, но это поведение потом упростит некоторые другие вещи, такие как подключение одного URLconf в другом, что мы рассмотрим позже);
  • наш шаблон так же включает в себя знак вставки ( ^ ) и символ доллара ( $ ). Это символы регулярных выражений, которые имеют особенный смысл: символ ^ означает «требуемый шаблон находится в начале строки«, а символ доллара — «требуемый шаблон находится в конце строки«. Объясним это на примере. Если мы используем шаблон в виде « ^hello/ «, т.е. без символа $ в конце, тогда любая строка, которая начинается с /hello/ попадёт под фильтр, например — /hello/foo , или /hello/bar , а не только /hello/ . Так же, если мы уберём символ ^ , и используем фильтр ‘hello/$’ — Django обработает любой URL, который заканчивается на hello/ , например — /foo/bar/hello/ . Если мы укажем только hello/ , без символов ^ и $ — тогда под фильтр попадёт вообще любой URL, содержащий слово hello , например — /foo/hello/bar . Если же мы используем ^ и $ — тогда под фильтр попадёт только URL /hello/ — ничего больше;
  • вам, возможно, любопытно — что будет, если в каком-то URL-е не будет закрывающей косой черты, т.е. — просто /hello , так как в нашем URLpattern она требуется в шаблоне, но её нет в запросе? Однако, по умолчанию — любой запрос к URL-у, который не совпадает с URLpattern и не содержит / будет перенаправлен на такой же URL, но с закрывающей косой чертой (это настраивается параметром APPEND_SLASH в настройках Django). Если вы из тех людей, которые любят закрывать все URL-ы символом косой черты, то всё, что вам надо — это добавить её к каждому URLpattern и установить APPEND_SLASH в True . Если вы предпочитаете не использовать / в ваших URL-ах — установите APPEND_SLASH в False и установите URLpattern так, как считаете нужным.

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

Что бы проверить наши изменения в URLconf , запустите сервер разработки Django с помощью команды python manage.py runserver (если он всё ещё работает — его не надо перезапускать, так как он автоматически определяет изменения в коде, и перезагружает его, так что вам нет необходимости делать это вручную). Сервер запускается по адресу http://127.0.0.1:8000/ (если вы не указали другое, например — python manage.py runserver 11.222.333.11:9090 ), так что — откройте браузер, и перейдите на страницу http://127.0.0.1:8000/hello/ — вы должны увидеть текст «Hello world» — вывод вашего Django-представления.

Поздравляем — вы только чт осоздали вашу первую Django-страницу.

Регулярные выражения (regular expressions)

Регулярные выражения (или regex) — удобный инструмент составления шаблонов текста. Так как модуль URLconf в Django позволяет использование регулрярных выражений для поиска соответствий в URL-ах, вам потребуется знать некоторые специальные символы regex для практики. В таблице ниже предоставлены наиболее используемые из них:

Символ Значение
. (dot) любой одинарный символ
d одна любая цифра
[A-Z] любой символ от А до Z (заглавные)
[a-z] любой символ от a до z (строчные)
[A-Za-z] юбой символ от А до Z (независимый регистр)
+ одно или более предыдущего выражения (например, d+ значит одна или больше цифр)
[^/]+ Один или более символов до (но не включая) символ обратной косой
? ноль или одно предыдущих выражения (т.е., d? — это ноль или одна цифр)
* ноль или больше предыдущих выражения (т.е, d* — это ноль, одна или больше цифр)
между одним или тремя (включительно) предыдущих выражений, т.е., d <1,3>— это одна, две или три цифры)

Для более полной информации — смотрите http://www.djangoproject.com/r/python/re-module/ или http://rtfm.co.ua/regex-polnaya-tablica/.

Небольшая заметка про ошибки 404

В настоящий момент наш URLconf содержит только один URLpattern — он обрабатывает запросы только к URL-у /hello/ . Что будет, если вы вызовете другой адрес?

Что бы узнать это — попробуйте запустить сервер разработки, и откройте страницу http://127.0.0.1:8000/goodbye/, или http://127.0.0.1:8000/hello/subdirectory/ или даже http://127.0.0.1:8000/ (корень сайта). Вы должны увидеть сообщение «Page not found». Django выводит её, так как запрошенный URL не поисан в вашем URLconf . Вот как она будет выглядеть:

Эта страница не только сообщает вам о 404 ошибке. Так же, она сообщает, по какому конкретно URL было обращение, и даже шаблон в URLconf , который был использован. Благодаря этой информации — вы можете установить, почему была получена ошибка 404.

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

Данная страница отображается только в том случае, если ваш Django-проект находится в debug-режиме. Мы поясним далее, как его отключить. Пока же, просто имейте ввиду, что каждый новый проект Django будет находится в дебаг-режиме. Если же его отключить — страница 404 ошибки будет другая.

Небольшая заметка про корень сайта

Как вы уже в курсе, ошибка 404 ошибка возникает даже при обращении к корню сайта — http://127.0.0.1:8000/. Django не добавляет ничего к корню проекта, а а этот URL не является чем-то особенным. Вы должны настроить URLpattern так же, как для любого другого URL в вашем URLconf .

URLpattern для корня сайта может показаться не совсем понятным, поэтому кратко коснёмся этого вопроса. Когда вы будете готовы подключить представление для корня вашего сайта — используйте URLpattern в виде ‘^$’ , который будет захватывать любые пустые строки. Например:

Начинаем работу с Django

Django — один из самых эффективных современных фреймворков для разработки веб-проектов. Сложно придумать что-то, позволяющее так же быстро реализовать портал или контентный проект, чем использовать Django. Причина подобной эффективности — четкий механизм работы с проектом, удобная ORM — система моделей для упрощения использования базы данных, встроенный функциональный движок шаблонов. Приведенная в статье информация актуальна для версии Django 1.5. Приступим.

Создание виртуального окружения

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

Эта команда создаст и активирует виртуальное окружение с названием mysite. В дальнейшем активируйте его командой

Установка Django

Установка Django очень проста. Чтобы установить последнюю версию Django, выполните команду

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

Создание проекта выполняется командой

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

Структура проекта Django

Верхний каталог mysite/ созданный командой startproject, никак не используется Django и не прописан в файлах конфигурации. Вы можете свободно переименовать его и сайт будет работать как и раньше.

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

Внутренний каталог mysite/ — это пакет Python, созданный Django для вашего проекта. Его имя нужно указывать для импорта находящихся в нем файлов. Напрмер, для импорта настроек проекта нужно указать import mysite.settings.

mysite/__init__.py: — пустой файл, указывающий на то, что каталог является пакетом Python.

mysite/wsgi.py: — начальная точка для запуска сайта веб-сервером.

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

Запуск веб-сервера для разработки

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

После запуска этой команды в консоли из каталога проекта и перехода по адресу http://127.0.0.1:8000/ вы увидите следующий вывод:

Это означает, что все работает правильно и можно продолжать работу над проектом.

Настройка базы данных

Запустить сайт на базе Django можно и без базы данных. Но в реальном проекте без нее не обойтись.

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

Для подключения базы данных к Django проекту отредактируйте в файле mysite/settings.py блок DATABASES

Чтобы использовать sqlite, достаточно указать django.db.backends.sqlite3 в качестве ENGINE и прописать имя файла, в котором будет хранится база, в параметре NAME.

Настройка временной зоны

Для указания в Django правильной временной зоны нужно отредактировать параметр TIME_ZONE.

Открываем в браузере http://en.wikipedia.org/wiki/List_of_tz_zones_by_name, выбираем ту зону, в которой будет находится ваш сервер и копируем в settings.py

Для Украины я использовал Europe/Kiev

Приложения Django

Мы уже создали наш проект, зачем нам еще нужны приложения?

Приложение создается для выполения определенной специфической задачи.

В свою очередь, проект — набор приложений, полностью реализующих работу сайта.

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

Для начала работы с Django мы создадим сайт, позволяющий создавать опросы.

Создадим приложение, которое будет отвечать работе опросов с названием polls:

В появившемся каталоге pools мы увидим

Модели Django

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

В нашем простом приложении мы добавим две модели.

Poll — будет хранить в себе вопрос и дату публикации опроса.

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

Чтобы создать нужные нам структуры для хранения данных, нам нужно отредактировать файл polls/models.py и добавить в него следующий текст:

Чтобы Django создала нужные для работы приложения таблицы в базе данных, нужно включить наше приложение в список INSTALLED_APPS файла settings.py. Отредактируйте файл и добавьте в конец списка ‘polls’,

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

После первого запуска syncdb вы должны увидеть следующее:

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

Давайте сделаем это!

Теперь давайте попробуем запустить наш проект и добавить в него немного данных.
Шаг 2 — запускаем первый проект на Django

Начинаем работу с Django: 17 комментариев

Привет, всем отчаянным и светлым головам, которые погрузились в мир Python и Django!

Я методично и последовательно проделал все указанные здесь установки, но дойдя до создания ‘суперпользователя’ столкнулся с невозможностью ввести текст ‘пароля’ в поле ‘Password’, — курсор даже не двигается, подтверждение (Password (again)) — также не печатает. И любопытно то, что проблем нет с вводом текста в поля ‘Username’ и ‘Email address’.

Вот так загвоздка! …

Подскажите мне, на доступном языке, как решить подобную проблему? …

Установка Django

Для установки и создания проекта на фреймворке Django версии, отличной от серверной, потребуется выполнить действия, описанные ниже. Установка Django осуществляется посредством протокола SSH:

1. Для установки необходимо воспользоваться утилитой virtualenv . Создать и активировать виртуальное окружение для Вашей версии фреймворка Django можно в каталоге «.djangovenv»:

$ virtualenv .djangovenv
username@vh200

2. Далее необходимо установить требуемую версию фреймворка в виртуальном окружении (в данном случае выбрана версия Django 1.7.1):

$ pip install django==1.7.1

3. В следующем шаге необходимо перейти в каталог сайта, где будет расположен сам проект. В качестве примера выбран каталог «

/site1″ на который направлен домен:

4. После этого требуется создать проект Django и деактивировать виртуальное окружение:

$ django-admin.py startproject ‘SWeb_DjangoSite’ && deactivate

При создании возможно заменить имя проекта «SWeb_DjangoSite» на нужное.

5. Необходимо убедитьcя, что каталог с проектом был создан и переместить его содержимое в каталог «public_html».
Проще всего это сделать удалив существующий каталог «public_html» и переименовав каталог с самим проектом:

/site1 $ rm -rf public_html/
username@vh200

/site1 $ mv SWeb_DjangoSite/ public_html

Далее необходимо перейти в каталог:

/site1 $ cd public_html/

6. Далее требуется открыть файл «wsgi.py» в подкаталоге с именем проекта с помощью текстового редактора и указать полные пути к установленному фреймворку, проекту и виртуальному окружению.

Полный путь к текущему каталогу можно узнать, выполнив команду » pwd «:

/site1/public_html $ pwd
/home/u/username/site1/public_html

В данном случае содержимое файла следующее:

#путь к проекту
sys.path.append(‘/home/u/username/site1/public_html’)
#путь к фреймворку
sys.path.append(‘/home/u/username/site1’)
#путь к виртуальному окружению
sys.path.append(‘/home/u/username/.djangovenv/lib64/python2.7/site-packages/’)
os.environ[«DJANGO_SETTINGS_MODULE»] = «ИМЯ_ПРОЕКТА.settings»

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Текст «ИМЯ_ПРОЕКТА» необходимо изменить на имя созданного проекта, в нашем случае это SWeb_DjangoSite.

7. В каталоге сайта создать файл .htaccess с указанием полного пути к файлу «wsgi.py».
В данном случае содержимое файла «

Текст «ИМЯ_ПРОЕКТА» также необходимо изменить на имя созданного проекта.

8. В панели управления хостинга в разделе «Настройка сайта» необходимо убедиться, что для домена выбрана версия Apache 2.2 + mod_passenger + mod_wsgi (wp) .

Не нашли ответ на свой вопрос? Позвоните нашим специалистам по бесплатному телефону 8-800-100-16-15.

Часть 1. Python/Django и Hello World. Запуск тестового сайта на Python/Django под OS Windows.

�� 1 237 просмотров

Django — это MVC/MTV — фреймворк, написанный на языке Python, а Python — высокоуровневый язык для всех повседневных задач на любой платформе и имеет интерпретаторы для всех известных ОС, есть даже реализация для запуска поверх Java — машины, которая именуется , как Jython.

О чем будет статья?

В статье затронем моменты установки интерпретатора Python 3.x и Django на Windows, в целях запуска тестового сайта на Python на ОС Windows. Обычно, при разработке проекта приходиться писать код на десктопе, чем и служит для нас Windows, а конечный вариант грузить на сервер, где правит только командная строка Linux — системы.

Установка Python и PIP на Windows

Для установки переходим на официальный сайт разработчика. Наводим курсором на раздел «Downloads» и видим всплывающее табло

На момент написания данной статьи поддерживаются 2 версии языка — 2.x и 3.x. Так как на версии 2.x написано очень много проектов и версии языка отличаются друг от друга кардинально, то поддерживаются обе версии, но в новых проектах предпочтительнее использовать последнюю версию языка — 3.x. Загружаем и кликаем для установки. Установка Python 3.x идет стандартным образом

На начальном этапе установки необходимо указать, что мы хотим добавить нашу программу в переменную среду Windows, чтобы выполнять команды Python через командную строку. Если данный пункт отсутствует на интсалляторе, то придется добавить вручную через панель настроек Windows, прописав через «;» путь установки Python для переменной PATH. Инсталлятор предлагает по умолчанию установить Python в папку пользователя системы. Нажмем пользовательский режим, оставляем все, как есть и принимаем во внимание, что pip устанавливается в процессе инсталляции Python и если в инсталляторе его нет, придется установить после установки Python.

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

Жмем «Next» и меняем место установки. Можно установить в любое удобное место — все на вкус и удобство пользователя. Жмем «Install» и заканчиваем установку.

Если в командной строке выскакивает сообщение, что есть более новая версия pip и, вместе с инсталлятором установилась старая версия, то проблему решит апгрейд pip через команду:

Если pip не установлен при инсталляции, то давайте разберем другой способ установки pip. Другой способ установки инструмента pip — скачиваем этот инструмент get-pip.py с официального сайта и запускаем этот файл через командную строку

После установки надо добавить переменную C:\PythonServer\Lib\site-packages\django\bin в PATH к уже имеющимся переменным Python, которые были добавлены автоматически инсталлятором

Установка Django в виртуальной среде Windows

После того, как Python и pip установлены и настроены переменные среды, необходимо установить пакеты Django. Есть несколько способов установки Django. В данной статье будем пользоваться рекомендованным методом установки официального релиза Django.

Ниже показан рекомендованный метод установки Django от разработчиков этого фреймворка:

  1. Установка через pip. Так как pip был установлен через автономный инсталлятор, то необходимо проверить на то, что он имеет последнюю, актуальную версию, иначе это может быть причиной сбоя установки.
  2. Использование virtualenv и virtualenvwrapper. Эти инструменты предоставляют изолированные среды Python, которые являются более практичными, чем устанавливаемые пакеты в системе. Они , также, позволяют устанавливать пакеты без привилегий администратора. Здесь дополнительная информация по созданию и использованию virtualenv на Python 3.
  3. После создания и активации виртуальной среды, нужно установить Django через команду

Теперь необходимо выполнить каждый из вышеизложенных шагов последовательно.

  1. Так как pip был у нас установлен в процессе инсталляции, то пропускаем этот шаг.
  2. Устанавливаем виртуальную среду через установщик pip при помощи последовательности команд:

и проверяем версию установленного virtualenv:

Итак, в предыдущем шаге мы установили инструмент для создания виртуальных сред Python. Настал момент создания виртуальной среды. Виртуальную среду можно создать в любом месте. Для нашего примера создадим в корневой папке Python C:\PythonServer\ новую папку Environments, в которой будут создаваться наши новые среды. Теперь в этой папке создадим новую виртуальную среду под названием «sites» и для этого, через командную строку заходим в папку C:\PythonServer\Environments и выполняем команду:

И после того, когда виртуальная среда создана, через командную строку заходим в папку созданной виртуальной среды:

и активируем эту среду при помощи команды:

и выполняем команду:

которая вернет версию скрипта

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


После того, как создали виртуальную среду и активировали нам необходимо установить в эту виртуальную среду фреймворк Django:

Далее заходим в папку нашей среды и устанавливаем через .\Scripts\django-admin.py исходники нашего проекта через команду:

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

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

или, то же самое можно сделать командой:

Для запуска проекта переходим в папку нашего проекта выполняем команду запуска сервера при помощи файла manage.py:

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

На этом установка Python и тестового сервера с Django завершена.

Django — Урок 001. Развёртывание сайта на Django + PostgreSQL + Gunicorn + Nginx

После того, как доступ к серверу с Ubuntu 16.04 был настроен в одной из предыдущих статей , настало время развернуть на нём всё необходимое для работы сайта, а именно:

  • Django — фреймворк для разработки web-приложений на языке Python;
  • PostgreSQL — базу данных SQL ;
  • Gunicorn — WSGI HTTP сервер на Python для UNIX систем;
  • Ngnix — HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения;
  • Supervisor — это менеджер процессов, который существенно упрощает управление долго работающими программами, в частности сайтами, которые необходимо автоматически перезапускать после падений.

Шаг 1 — обновление системы

Сделаем обновление существующих пакетов. Мало ли, система имеет устаревшие пакеты.

Шаг 2 — Установка всех необходимых пакетов без установки виртуального окружения

Установим пачкой все необходимые пакеты, которые не будут использоваться через virtualenv, а именно Python 3, PostgreSQL, Nginx.

Pip я в итоге устанавливал отдельно через утилиту easy_install3 , которая идёт в комплекте python3-setuptools , во-первых потому, что тогда ставится последняя версия, а вторых в случае установки через apt-get были ошибки при установке пакетов в virtualenv.

Шаг 3 — Создание базы данных и пользователя базы данных

А теперь создадим базу данных и пользователя, дав расширенные права пользователю postgres через утилиту sudo, который создаётся при установке PostgreSQL.

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

Создадим базу данных:

Далее настройка пользователя проекта. Кодировку он будет использовать UTF8, поскольку данная кодировка используется и Django, а Python файлы рекомендует хардкодить с кодировкой UTF8, особенно, если в них присутствует текст, который будет отображаться на страницах сайта. Также устанавливается уровень изоляции в базе данных. То есть когда будут доступны данные для чтения. В данном случае после подтверждения транзакции в общем случае. Конечно, имеются случаи, когда данные доступны до подтверждения, но это отдельная тема для разговора. А также устанавливается тип временных зон, который для Django по умолчанию UTC.

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

Ну и выйдем из консоли PostgreSQL.

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

Шаг 4 — Установка виртуального окружения

Установим и активируем виртуальное окружение:

Шаг 5 — Установка драйвера PostgreSQL

Произведём установку следующей командой

Шаг 6 — Создание проекта

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

Шаг 7 — Настройка подключения к базе данных

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

Для этого найдите в файле следующий кусок кода:

И замените его следующим, с учётом ваших данных для подключения к базе данных:

Шаг 8 — Выполнение миграций базы данных

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

А ещё создадим суперпользователя, который будет администратором с максимальными правами доступа к вашему сайту. Выполните следующую команду и следуйте инструкциям.

Шаг 9 — Установка Gunicorn

Установим Gunicorn, который будет выступать в качестве HTTP сервера для нашего сайта. Устанавливаем его внутри виртуального окружения.

Можете проверить, что сайт уже работает:

Шаг 10 — Настройка статических файлов

Django по умолчанию отдаёт статические файлы только в Debug режиме, который не используется на боевом сервере. Для боевого сервера все статические файлы из всех проектов собираются в отдельную специальную папку с помощью команды collectstatic , а саму папку необходимо указывать в файл settings.py.

И добавим строку, которая будет указывать, куда собирать статические файлы.

А теперь соберём всю статику в данный каталог:

Шаг 11 — Настройка Nginx

Отредактируем конфигурационный файл Nginx.

Удалим всё его содержимое и замени следующим.

И запустим gunicorn

После этого вы обнаружите, что сайт доступен уже на порту 80.

Шаг 12 — Настройка supervisor

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

Для стабильной работы Gunicorn необходимо создать его конфигурационный файл. Он будет располагаться рядом с файлом, который будет запускаемым для нашего web-приложения.

Добавим следующую конфигурационную информацию:

То есть мы указали, к какому порту привязываемся, и какой пользователь запускает процесс. А также количество рабочих процессов. В данном случае их три. Рассчитывается по следующей формуле:

workers = N cpu + 1

После чего создадим конфигурацию самого supervisor

Пропишем в него следующие настройки

А теперь запустим supervisor. Есть один нюанс при установке supervisor. Он не стартанул в качестве службы после того, как был установлен. Поэтому нужно принудительно добавить его в автозагрузку и запустить вручную, если не хотите перезагружать сервер.

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

При перезагрузке сервера всё будет стартовать автоматически

Примечание

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

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

Для Django рекомендую VDS-сервера хостера Timeweb .

Рекомендуем хостинг TIMEWEB

Рекомендуемые статьи по этой тематике

Веб-фреймворк Django (Python)

На этой странице

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

Требования

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

Рекомендуется базовое понимание концепций программирования и языка Python, но это не обязательно для освоения основных понятий.

Примечание: Python является одним из самых доступных в чтении и понимании для новичков языков программирования. Тем не менее, если вы захотите глубже понять этот модуль, в Интернете сейчас доступны многочисленные бесплатные книги и учебные пособия (новички в программирование возможно захотят посетить Python for Non Programmers на вики-страницах python.org).

Руководство

Задания

Следующее задание проверит ваше понимание того, как создать сайт с помощью Django, как описано в руководствах, перечисленных выше.

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

Настройка Django Settings: лучшие практики

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

Table of contents:

Управление настройками Django: проблемы

Разные окружения. Обычно в разработке используется несколько сред: локальная, dev, ci, qa, staging (промежуточная) , производственная и т. д. Каждая среда может иметь свои собственные конкретные настройки (например: DEBUG = True, более подробное ведение журнала, дополнительные приложения, некоторые фальшивые (mocked) данные и т. д.). Поэтому нам нужен подход, который позволяет сохранять все эти настройки Django для каждой среды отдельно.

Чувствительные данные. У нас есть SECRET_KEY в каждом проекте Django. Кроме того, могут быть пароли и токены БД для сторонних API, таких как Amazon или Twitter. Все данные желательно сохранять в системах VCS.

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

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

Настройка конфигурации: разные подходы

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

settings_local.py

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

Основная идея этого метода заключается в расширении всех специфических для среды настроек в файле settings_local.py, который игнорируется системой VCS. Вот пример:

Плюсы:

  • Секреты коды не попадают в VCS.

Недостатки:

  • settings_local.py отсутствует в VCS, поэтому вы можете потерять некоторые настройки среды Django.
  • Файл настроек Django представляет собой код Python, поэтому settings_local.py может иметь некоторую неочевидную логику.
  • У вас должен быть файл settings_local.example (в VCS), чтобы поделиться настройками по умолчанию со всеми разработчиками.

Отдельный файл настроек для каждой среды

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

В этом случае вы создаете каталог (пакет) settings со следующей структурой:

Чтобы запустить проект с определенной конфигурацией, вам нужно использовать дополнительный параметр:

Плюсы:

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

Недостатки:

  • Нужно найти способ обработки секретных паролей и токенов.
  • «Наследование» настроек может быть сложно отслеживать и контролировать.

Переменные окружения

Чтобы решить проблему с конфиденциальными данными, вы можете использовать переменные среды.

Это самый простой пример использования Python os.environ, и у него есть несколько проблем:

  1. Необходимо обработать исключения KeyError.
  2. Необходимо конвертировать типы вручную (см. Использование DATABASE_PORT).

Чтобы исправить KeyError, вы можете написать свою собственную оболочку. Например:

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

Плюсы:

  • Конфигурация отделена от кода.
  • Паритет среды – у вас одинаковый код для всех сред.
  • Нет наследования в настройках, и более чистый и согласованный код.
  • Существует теоретическое обоснование использования переменных среды – 12 факторов.

Недостатки:

  • Вы должны управлять совместным использованием конфигурации по умолчанию между разработчиками.

12 факторов

12 Факторов – это набор рекомендаций о том, как создавать распределенные веб-приложения, которые будут легко развертывать и масштабировать в облаке. Он был создан Heroku, известным провайдером облачного хостинга.

Как следует из названия, коллекция состоит из двенадцати частей:

  1. Базы кода (Codebase)
  2. Зависимости (Dependencies)
  3. Конфигурация (Config)
  4. Вспомогательные сервисы (Backing services)
  5. Сборка, релиз, запуск (Build, release, run)
  6. Процессы (Processes)
  7. Привязка к портам (Port binding)
  8. Параллелизм (Concurrency)
  9. Disposability
  10. Dev/prod паритет (Dev/prod parity)
  11. Логгирование (Logs)
  12. Процессы администратора (Admin processes)

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

Его главное правило – хранить конфигурацию в среде. Следование этой рекомендации даст нам строгое отделение конфига от кода.

Вы можете прочитать больше на 12factor.net.

django-environ

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

Теперь пришло время поговорить о наборе инструментов.

Написание кода с использованием os.environ иногда может быть сложным и потребовать дополнительных усилий для обработки ошибок. Вместо этого лучше использовать django-environment.

Технически это слияние следующих проектов:

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

файл settings.py перед:

файл settings.py после:

Файл .env:

Структура настроек

Вместо разделения настроек по средам вы можете разделить их по источникам: Django, сторонним приложениям (Celery, DRF и т. д.) И пользовательским настройкам.

файл __init__.py:

Каждый модуль может быть выполнен в виде пакета, и вы можете разбить его более детально:

Соглашения об именах

Именование переменных является одной из самых сложных частей разработки. Так называется наименование настроек. Мы не можем ссылаться на Django или сторонние приложения, но мы можем следовать этим простым правилам для наших пользовательских (проектных) настроек:

  • Дайте значимые имена вашим настройкам.
  • Всегда используйте префикс с именем проекта для пользовательских настроек (проекта).
  • Пишите описания ваших настроек в комментариях.

Плохой пример:

Хороший пример:

Измените MYAWESOMEPROJECT на ваше реальное название проекта.

Настройки Django: лучшие практики

  • Сохраняйте настройки в переменных среды.
  • Запишите значения по умолчанию для производственной конфигурации (исключая секретные ключи и токены).
  • Не задавайте жесткие настройки и не помещайте их в VCS.
  • Разделите настройки на группы: Django, third-party, проект.
  • Следуйте правилам именования для пользовательских (проектных) настроек.

Заключение

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

Используя подход с использованием переменных сред, вы можете легко перейти от монолитной архитектуры к микросервису, обернуть свой проект в контейнеры Docker и развернуть его на любой платформе хостинга VPS или Cloud, такой как: Amazon, Google Cloud или ваш собственный кластер Kubernetes.

Оригинальная статья: Alexander Ryabtsev Configuring Django Settings: Best Practices

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