«Эта статья переработана и обновлена до последней версии Django - май 2016 г.»
В Часть 1 из этой серии вы узнали, как установить и настроить Django в виртуальной среде, и создали скелет своего первого проекта.
Затем в Часть 2 мы создали приложение и модель для Сообщение объекты, которые мы позже перенесли в базу данных. Наконец, мы показали вам, как интегрировать ваше недавно созданное приложение в пользовательский интерфейс администрирования Django.
Эти статьи являются частью серии Django:
Установка и настройка Django Web Framework с виртуальными средами - Часть 1
Обзор основ Python и создание вашего первого веб-приложения с помощью Django - Часть 2
В этом последнем руководстве мы обсудим, как получить доступ к приложению с помощью пользовательского интерфейса и как сделать его мобильным для всех типов устройств. Тем не менее, давайте приступим.
Для создания объектов типа
Сообщение (помните, что это модель, которую мы определили в Часть 2 из этой серии) мы будем использовать интерфейс администратора Django.Убедитесь, что встроенный веб-сервер Django работает на порту 8000 (или другой по вашему выбору), выполнив следующую команду из внешнего myfirstdjangoproject каталог:
# cd ~ / myfirstdjangoenv / myfirstdjangoproject. # python manage.py runserver 0.0.0.0:8000.
Теперь откройте свой веб-браузер и укажите на http://ip-address: 8000 / админ
, затем войдите в систему, используя учетные данные, которые вы установили в предыдущей статье, и начните писать сообщение (которое, опять же, создаст объект типа Сообщение и вставьте связанные данные в базовую базу данных):
Повторите процесс 2 или 3 раза:
После того, как мы создали пару сообщений, давайте посмотрим, что нам нужно сделать, чтобы отобразить их с помощью нашего веб-браузера.
Наш первый взгляд (~ / myfirstdjangoenv / myfirstdjangoproject / myblog / views.py) будет отвечать за фильтрацию всех Сообщение объекты и возвращая те, где значение whenPublished меньше или равно текущим дате и времени (whenPublished__lte = часовой пояс.now ()) упорядочено по убыванию whenPublished, что то же самое, что сказать "последний первый“.
Эти объекты сохраняются в переменной с удобным названием сообщения и возвращаются (обозначены как всепосты) для встраивания в HTML, как мы увидим в следующем разделе:
из django.shortcuts import render. из .models import Post. из django.utils импортировать часовой пояс. def posts (request): posts = Post.objects.filter (whenPublished__lte = timezone.now ()). order_by ('- whenPublished') вернуть render (request, 'myblog / posts.html', {'allposts': posts} )
Наконец, двойное подчеркивание в whenPublished__lte
выше используется для разделения поля базы данных (когда опубликовано) из фильтра или операции (lte = меньше чем или равно).
После того, как мы определили наше первоначальное представление, приступим к работе над связанным шаблоном.
Следуя директивам и путям, указанным в предыдущем разделе, мы будем хранить наш исходный шаблон внутри мойблог / шаблоны / мойблог. Это означает, что вам нужно будет создать каталог с именем шаблоны и подкаталог с именем мой блог:
# cd ~ / myfirstdjangoenv / myfirstdjangoproject / myblog. # mkdir -p templates / myblog.
Мы будем называть шаблон posts.html
и вставьте в него следующий код. Вы заметите, что мы добавляем онлайн-ссылки на jQuery, Бутстрап, FontAwesome и шрифты Google.
Кроме того, мы заключили код Python в фигурные скобки внутри HTML. Обратите внимание, что для каждого объекта типа Post мы покажем его заголовок, дату публикации и автора и, наконец, его текст. Наконец, красным цветом вы увидите, что мы делаем ссылку на объекты, возвращаемые через myblog / views.py:
Хорошо, вот posts.html файл:
Мой блог
{% для публикации в allposts%}{% endfor%}{{ Заголовок поста }}Опубликовано {{post.whenPublished}} пользователем {{post.author}}.{{post.text | linebreaks}}
В приведенном выше шаблон, то разрывы строк фильтр используется для замены разрывов строк в обычном тексте соответствующим эквивалентом HTML (
или
Затем нам нужно настроить сопоставление между URL-адресами в нашем приложении и соответствующими представлениями, которые возвращают данные. Для этого создайте файл с именем urls.py внутри мой блог со следующим содержанием:
из django.conf.urls импортировать url. из. импортировать просмотры. urlpatterns = [url (r '^ $', views.posts, name = 'posts'),]
В г '^ $'
заслуживает немного большего объяснения. Ведущий р
указывает Django обрабатывать строку в одинарных кавычках как регулярное выражение.
В частности, г '^ $'
представляет собой пустую строку, поэтому, когда мы указываем в нашем браузере http://ip-address: 8000
(и ничего больше), данные, возвращаемые переменной сообщения внутри views.py
(см. предыдущий раздел) будут представлены на нашей домашней странице:
И последнее, но не менее важное: мы добавим urls.py файл нашего приложения для блога (~ / myfirstdjangoenv / myfirstdjangoproject / myblog / urls.py) в urls.py нашего основного проекта (~ / myfirstdjangoenv / myfirstdjangoproject / myfirstdjangoproject / urls.py):
из django.conf.urls import include, url. из django.contrib import admin urlpatterns = [url (r '^ admin /', include (admin.site.urls)), url (r '', include ('myblog.urls')),]
Затем запустим веб-сервер:
# cd ~ / myfirstdjangoenv / myfirstdjangoproject. # python manage.py runserver 0.0.0.0:8000.
Теперь мы должны увидеть списки сообщений, которые мы создали ранее:
Благодаря Бутстрап, вы все равно можете получить отличную визуализацию на меньшем устройстве:
Теперь давайте рассмотрим концепции, которые мы рассмотрели в этой статье и в этой серии:
1. Каждый модель определяет объект и сопоставляется с таблицей базы данных, поля которой, в свою очередь, сопоставляются со свойствами этого объекта. С другой стороны, шаблон определяет пользовательский интерфейс, в котором будут отображаться данные, возвращаемые представлением.
Допустим, мы хотим изменить нашу модель, добавив поле с именем резюме к Сообщение объект, где мы будем хранить необязательное краткое описание каждого сообщения. Давайте добавим следующую строку в myblog / models.py:
резюме = модели. CharField (max_length = 350, blank = True, null = True)
Как мы узнали в предыдущей статье, нам нужно перенести изменения в базу данных:
# python manage.py makemigrations myblog. # python manage.py перенести myblog.
Затем используйте интерфейс администратора, чтобы отредактировать сообщения и добавить краткое изложение к каждому сообщению. Наконец, замените следующую строку в шаблоне (posts.html):
{{post.text | linebreaks}}
с
{{post.summary}}
Обновите домашнюю страницу, чтобы увидеть изменения:
2. А Посмотреть функция принимает HTTP-запрос и возвращает HTTP-ответ. В этой статье, def сообщения (запрос) в views.py обращается к базовой базе данных для получения всех сообщений. Если мы хотим получить все сообщения со словом анзибль в названии следует заменить.
posts = Post.objects.filter (whenPublished__lte = часовой пояс.now ()) .order_by ('- когда опубликовано')
с
posts = Post.objects.filter (title__icontains = "доступный") .order_by ('- когда опубликовано')
Отделив пользовательский интерфейс от логики приложения в веб-приложениях, Django облегчает задачи поддержки и расширения приложений.
3. Если вы следовали инструкциям, приведенным в этой серии, структура вашего проекта должна быть следующей:
myfirstdjangoenv / myfirstdjangoproject. ├── db.sqlite3. ├── manage.py. ├── мойблог. │ ├── admin.py. │ ├── admin.pyc. │ ├── __init__.py. │ ├── __init __. Pyc. │ ├── миграции. │ │ ├── 0001_initial.py. │ │ ├── 0001_initial.pyc. │ │ ├── __init__.py. │ │ └── __init __. Pyc. │ ├── models.py. │ ├── models.pyc. │ ├── шаблоны. │ │ └── мойблог. │ │ └── posts.html. │ ├── tests.py. │ ├── urls.py. │ ├── urls.pyc. │ ├── views.py. │ └── views.pyc. └── myfirstdjangoproject ├── __init__.py ├── __init __. Pyc ├── settings.py ├── settings.pyc ├── urls.py ├── urls.pyc ├── wsgi.py └── wsgi .pyc.
Если приведенный выше список неправильно отображается в вашем браузере, вот снимок экрана с выводом следующей команды:
# дерево myfirstdjangoenv / myfirstdjangoproject.
Хотя все эти концепции поначалу могут показаться немного пугающими, я могу заверить вас, что Django стоит всех усилий, необходимых для знакомства с ним.
Я надеюсь, что пример, который мы использовали в этой серии, чтобы познакомить вас с этой выдающейся веб-структурой, побудит вас узнать больше. Если да, то официальная Документация Django (который постоянно обновляется) - лучшее место для начала.
Я могу заверить вас, что Django - это гораздо больше, чем мы можем адекватно осветить в серии статей, так что не стесняйтесь исследовать его и учиться на практике!
Не стесняйтесь писать нам сообщение с вопросами или предложениями, используя форму ниже.