М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет309/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   305   306   307   308   309   310   311   312   ...   334
Байланысты:
Изучаем Python


Глава 19 • Учетные записи пользователей
Объект 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 = [
...
# Страница для добавления новой темы
path('new_topic/', views.new_topic, name='new_topic'),
]


Редактирование данных
425
Эта схема URL будет отправлять запросы функции представления 
new_topic()

которую мы сейчас напишем.
Функция представления new_topic()
Функция 
new_topic()
должна обрабатывать две разные ситуации: исходные за-
просы страницы 
new_topic
(в этом случае должна отображаться пустая форма) 
и обработка данных, отправленных на форме. Затем она должна перенаправить 
пользователя обратно на страницу 
topics
:


Достарыңызбен бөлісу:
1   ...   305   306   307   308   309   310   311   312   ...   334




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

    Басты бет