[Разработка личного веб-сайта Django] Написание вашего первого приложения Django — часть 1

искусственный интеллект Python

Написание вашего первого приложения Django — часть 1

Давайте учиться на примере.

В этом руководстве мы познакомим вас с созданием базового приложения для голосования.

Он будет состоять из двух частей:

  • Общедоступный сайт для просмотра и голосования.
  • Сайт администратора, который позволяет добавлять, изменять и удалять голоса.

Мы предполагаем, что вы прочиталиУстановить Джанго. Вы можете узнать, какая версия Django была установлена ​​командами набора текста (префиксных по $) в командной строке.

/

$ python -m django --version

Если эта команда выводит номер версии, это означает, что вы установили эту версию Django; если вы получаете сообщение об ошибке «Нет модуля с именем django», это означает, что вы его не устанавливали.

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

Вы можете проверить документациюКак установить Джангопроцедуры и советы по удалению старой версии и установке новой версии.

Где получить помощь:

Если у вас возникли трудности с чтением или выполнением этого руководства, отправьте сообщение по адресуdjango-usersИли присоединитесь к #django на irc.freenode.net, чтобы общаться с другими пользователями Django, которые могут вам помочь.

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

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

Откройте командную строку,cdПерейдите в каталог, в который вы хотите поместить свой код, и выполните следующую команду:

/

$ django-admin startproject mysite

Эта строка кода создастmysite содержание. Если команда не удалась, см.Проблемы с запуском ``django-admin``, может вам помогут.

аннотация

Вам следует избегать называть свои проекты внутренними зарезервированными словами из Python или Django. В частности, вам следует избегать использования чего-то вродеdjango(будет конфликтовать с самим Django) илиtest(будет конфликтовать со встроенными компонентами Python) такое имя.

Куда должен идти мой код?

Если вы когда-либо были программистом на PHP (без использования современных фреймворков), вы, вероятно, привыкли размещать свой код в корне документа веб-сервера (например,/var/www). Это не требуется при использовании Django. Не рекомендуется помещать весь ваш код Python в корневую директорию вашего веб-сервера, потому что это рискованно. Например, это повысит вероятность того, что люди увидят ваш код на сайте. Это не хорошо для безопасности сайта.

Поместите свой код в корневой каталог документаза пределамигде-то вроде /home/mycode.

покажи нам startprojectЧто было создано:

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

Эти каталоги и файлы предназначены для:

  • Самый внешний корневой каталог :file:mysite/ — это просто контейнер для вашего проекта, Django не заботится о его имени, вы можете переименовать его как хотите.
  • manage.py: инструмент командной строки, позволяющий различными способами управлять проектами Django. ты можешь читатьdjango-admin and manage.pyполучить всеmanage.pyДетали.
  • внутренний слойmysite/Каталог содержит ваш проект, который представляет собой чистый пакет Python. Его имя — это имя пакета Python, которое вам нужно использовать при ссылке на что-либо внутри него. (Например mysite.urls).
  • mysite/__init__.py: пустой файл, который сообщает Python, что этот каталог следует рассматривать как пакет Python. Если вы новичок в Python, прочтите официальную документацию.Подробнее о пакетах.
  • mysite/settings.py: файл конфигурации для проекта Django. Если вы хотите узнать, как работает этот файл, см.Django settingsУзнайте подробности.
  • mysite/urls.py: Объявление URL-адреса проекта Django, например «каталог» вашего веб-сайта. читать Планировщик URLДокументация для получения дополнительной информации об URL-адресах.
  • mysite/wsgi.py: служит точкой входа для вашего проекта, работающего на WSGI-совместимом веб-сервере. читать Как развернуть с помощью WSGIУзнать больше деталей.

Простой сервер для разработки

Давайте удостоверимся, что ваш проект Django действительно успешно создан. Если ваш текущий каталог не является внешнимmysiteкаталог, перейдите в этот каталог и выполните следующую команду:

/

$ python manage.py runserver

Вы должны увидеть такой вывод:

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

二月 28, 2019 - 15:50:53
Django version 2.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

аннотация

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

То, что вы только что начали, — это простой сервер разработки, который поставляется с Django, легким веб-сервером, написанным на чистом Python. Мы встроили этот сервер в Django, чтобы вы могли быстро разработать то, что хотите, поскольку вам не нужно выполнять работу по настройке сервера производственного уровня (например, Apache), если вы не готовы перейти к работе.

Сейчас самое время напомнить вам:Пожалуйста, не надоИспользуйте этот сервер в любом месте, связанном с производством. Этот сервер предназначен только для разработки. (Мы являемся экспертами в области веб-фреймворков, а не веб-серверов.)

Теперь, когда сервер запущен, браузер обращается кhttps://127.0.0.1:8000/. Вы увидите страницу «Поздравления», и после запуска ракеты сервер запущен и работает.

изменить порт

по умолчанию,runserverКоманда настроит сервер на прослушивание порта 8000 внутреннего IP-адреса этой машины.

Если вы хотите изменить прослушиваемый порт сервера, используйте параметр командной строки. Например, следующая команда заставит сервер прослушивать порт 8080:

/

$ python manage.py runserver 8080

Если вы хотите изменить IP-адрес, который прослушивает сервер, введите новый перед портом. Например, чтобы прослушивать общедоступные IP-адреса всех серверов (полезно, когда вы используете Vagrant или хотите показать свою работу другим компьютерам в сети), используйте:

/

$ python manage.py runserver 0:8000

0 Да 0.0.0.0сокращение для . Полную документацию по серверу разработки можно найти по адресу:djamdin:`runserver`можно найти в справочной документации.

Сервер, который будет автоматически перезагружатьсяrunserver

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

Создайте приложение для голосования

Теперь, когда ваша среда разработки — этот «проект» — настроена, вы можете приступать к работе.

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

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

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

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

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

/

$ python manage.py startapp polls

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

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

Эта структура каталогов содержит все содержимое приложения для голосования.

напишите первый взгляд

Давайте начнем писать наш первый вид. Открытым polls/views.pyи введите следующий код Python:

polls/views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

Это самый простой вид в Django. Чтобы увидеть эффект, нам нужно сопоставить с ним URL — вот почему нам нужен URLconf.

Чтобы создать URLconf, создайте новый в каталоге опросов.urls.pyдокумент. Каталог вашего приложения теперь должен выглядеть так:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

существует polls/urls.py, введите следующий код:

polls/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

Следующий шаг — указать в корневом файле URLconf, который мы создалиpolls.urlsмодуль. существует mysite/urls.pyфайлurlpatternsвставить один в списокinclude(), следующее:

mysite/urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

функцияinclude()Разрешить ссылки на другие URLconfs. Всякий раз, когда Django встречает :func:~django.urls.include , он усекает часть URL-адреса, соответствующую этому элементу, и отправляет оставшуюся строку в URLconf для дальнейшей обработки.

мы проектируемinclude()Идея состоит в том, чтобы сделать его plug-and-play. Поскольку приложение для голосования имеет собственный URLconf (polls/urls.py), их можно поместить в «/polls/», «/fun_polls/», «/content/polls/» или любой другой путь, и приложение будет работать нормально.

когда использоватьinclude()

Вы всегда должны использовать при включении других шаблонов URLinclude(),admin.site.urlsявляется единственным исключением.

ты сейчасindexПредставления добавляются в URLconf. Вы можете убедиться, что он работает, выполнив следующую команду:

/

$ python manage.py runserver

Доступ с помощью вашего браузераhttp://localhost:8000/polls/, вы должны увидеть "Hello, world. You're at the polls index.", вот где тыindexопределяется в представлении.

Страница не найдена?

Если вы видите здесь страницу с ошибкой, убедитесь, что вы посещаете http://localhost:8000/polls/ вместо http://localhost:8000/.

функцияpath()Имеет четыре параметра, два из которых обязательны:route и view, два необязательных параметра:kwargs и name. Теперь пришло время изучить, что означают эти параметры.

path()Параметры:route

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

Эти рекомендации не будут соответствовать параметрам GET и POST или доменным именам. Например, URLconf обрабатывает запросыhttps://www.example.com/myapp/, он попытается сопоставитьmyapp/. Обработать запросhttps://www.example.com/myapp/?page=3, он только попытается сопоставитьmyapp/.

path()Параметры:view

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

path()Параметры:kwargs

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

path()Параметры:name

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

Когда вы поймете основной поток запросов и ответов, прочтитеЧасть 2 учебникаНачните работу с базой данных.