Книга «Изучаем Python»


Рис. 18.5. Страница со списком всех записей по отдельной теме Итоги 407



Pdf көрінісі
бет247/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   243   244   245   246   247   248   249   250   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

Рис. 18.5.
Страница со списком всех записей по отдельной теме


Итоги
407
УПРАЖНЕНИЯ
18-7 . Документация шаблона: просмотрите документацию по шаблонам Django по адресу 
https://docs .djangoproject .com/en/1 .8/ref/templates/ . Используйте ее в работе над собствен-
ными проектами .
18-8 . Страницы Pizzeria: добавьте страницу в проект Pizzeria из упражнения 18-6 (с . 398) 
с названиями видов пиццы . Свяжите каждое название пиццы со страницей, на которой вы-
водится список дополнений к этой пицце . Обязательно примените наследование шаблонов, 
чтобы повысить эффективность построения страниц .
Итоги
В этой главе вы начали осваивать построение веб-приложений с использованием 
инфраструктуры Django. Вы написали короткую спецификацию проекта, уста-
новили Django в виртуальной среде, узнали, как настроить проект, и проверили 
правильность настройки. Вы узнали, как создать приложение и как определить 
модели для представления данных в вашем приложении. Также были рассмотре-
ны базы данных, и вы узнали, как Django упрощает миграцию баз данных после 
внесения изменений в модель. Вы научились создавать суперпользователей для 
административного сайта, а также использовали административный сайт для ввода 
исходных данных.
Также в этой главе была представлена оболочка Django, позволяющая работать 
с данными проекта в терминальном сеансе. Вы научились определять URL-адреса, 
создавать функции представления и писать шаблоны для построения страниц сай-
та. Наконец, вы применили механизм наследования шаблонов, который упрощает 
структуру отдельных шаблонов и модификацию сайта по мере развития проекта.
В главе 19 мы создадим интуитивно понятные, удобные страницы, на которых 
пользователи смогут добавлять новые темы и записи, а также редактировать суще-
ствующие записи без участия административного сайта. Кроме того, будет добав-
лена система регистрации пользователей, чтобы любой пользователь мог создать 
учетную запись и вести свой журнал. Собственно, в этом и заключается сущность 
веб-приложения — создание функциональности, с которой может взаимодейство-
вать любое количество пользователей.


19
Учетные записи 
пользователей
Что является самым главным для веб-приложения? Что любой пользователь, жи-
вущий в любой стране мира, сможет создать учетную запись в вашем приложении 
и начать работать с ним. В этой главе мы построим формы, на которых пользова-
тели смогут вводить свои темы и записи, а также редактировать существующие 
данные. Кроме того, вы узнаете, как Django защищает приложения от распростра-
ненных атак на страницы с формами, чтобы вам не приходилось тратить много 
времени на продумывание средств защиты вашего приложения.
Затем будет реализована система проверки пользователей. Мы создадим стра-
ницу регистрации, на которой пользователи смогут создавать учетные записи, 
и ограничим доступ к некоторым страницам для анонимных пользователей. Затем 
некоторые функции представления будут изменены так, чтобы пользователь мог 
видеть только свои собственные данные. Вы узнаете, как обеспечить безопасность 
и конфиденциальность данных пользователей.
Редактирование данных
Прежде чем строить систему аутентификации пользователей для создания учетных 
записей, сначала мы добавим несколько страниц, на которых пользователи смогут 
вводить собственные данные. У пользователей появится возможность создавать 
новые темы, добавлять новые записи и редактировать записи, сделанные ранее.
В настоящее время данные могут вводиться только суперпользователем на админи-
стративном сайте. Однако разрешать пользователям работу на административном 
сайте явно нежелательно, поэтому мы воспользуемся средствами построения форм 
Django для создания страниц, на которых пользователи смогут вводить данные.
Добавление новых тем
Начнем с возможности создания новых тем. Страницы на базе форм добавляются 
практически так же, как и те страницы, которые мы уже строили ранее: вы опреде-
ляете URL, пишете функцию представления и создаете шаблон. Принципиальное 
отличие — добавление нового модуля 
forms .py
, содержащего функциональность 
форм.


Редактирование данных
409
Объект ModelForm
Любая страница, на которой пользователь может вводить и отправлять инфор-
мацию, является формой, даже если на первый взгляд она на форму не похожа. 
Когда пользователь вводит информацию, необходимо проверить, что он ввел 
корректные данные, а не вредоносный код (например, код для нарушения ра-
боты сервера). Затем проверенная информация обрабатывается и сохраняется 
в нужном месте базы данных. Django автоматизирует б
у
льшую часть этой 
работы.
Простейший способ построения форм в Django основан на использовании класса 
ModelForm
, который автоматически строит форму на основании моделей, опреде-
ленных в главе 18. Ваша первая форма будет создана в файле 
forms .py
, который 
должен находиться в одном каталоге с 
models .py
:
forms.py
from django import forms
from .models import Topic
 
class TopicForm(forms.ModelForm):
class Meta:
 
model = Topic
 
fields = ['text']
 
labels = {'text': ''}
Сначала импортируется модуль 
forms
и модель, с которой мы будем работать: 
Topic
. В точке 

определяется класс с именем 
TopicForm
, наследующий от 
forms.
ModelForm
. Простейшая версия 
ModelForm
состоит из вложенного класса 
Meta

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

форма создается на базе модели 
Topic

а на ней размещается только поле 
text

. Код 

приказывает Django не генериро-
вать подпись для текстового поля.
URL-адрес для new_topic
URL-адрес новой страницы должен быть простым и содержательным, поэтому 
после того, как пользователь выбрал команду создания новой темы, он направля-
ется по адресу 
http://localhost:8000/new_topic/
. Ниже приведена схема URL для 
страницы 
new_topic
, которая добавляется в 
learning_logs/urls .py
:
urls.py
...
urlpatterns = [
...
# Страница для добавления новой темы
url(r'^new_topic/$', views.new_topic, name='new_topic'),
]
Эта схема URL будет отправлять запросы функции представления 
new_topic()

которую мы сейчас напишем.


410

Достарыңызбен бөлісу:
1   ...   243   244   245   246   247   248   249   250   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет