2022年11月12日
第19章 用户账户
19.1 让用户能够输入数据
19.1.1 添加新主题
1.用于添加主题的表单
在Django中,创建表单的最简单方式是使用ModelForm,它根据我们在第18章定义的模型中
的信息自动创建表单。创建一个名为forms.py的文件,将其存储到models.py所在的目录中,并在
其中编写你的第一个表单:
models.py
from django import forms
from .models import Topic
class TopicForm(forms.ModelForm):
class Meta:
model = Topic
fields = ['text']
labels = {
'text': ''}
说明:注意单词拼写要正确,我第一次把fields误写为field,太粗心了!!!
2. URL模式new_topic
这个新网页的URL应简短而具有描述性,因此当用户要添加新主题时,我们将切换到
http://localhost:8000/new_topic/。下面是网页new_topic的URL模式,我们将其添加到
learning_logs/urls.py中:
urls.py
"""定义learning_logs的URL模式"""
--snip--
urlpatterns = [
--snip--
# 用于添加新主题的网页
path('new_topic/', views.new_topic, name='new_topic'),
]
3. 视图函数new_topic()
函数new_topic()需要处理两种情形:刚进入new_topic网页(在这种情况下,它应显示一个
空表单);对提交的表单数据进行处理,并将用户重定向到网页topics:
views.py
--snip--
from django.http import HttpResponseRedirect
from django.urls import reverse
from .forms import TopicForm
--snip--
def new_topi