(一)
论坛的话题创建和回帖,会用到表单渲染和表单验证;
在上一章中,设计了论坛的 models 模型层;
需要注意的是,在编写完 models 后,需要将字段都映射到数据库中,切换虚拟环境,进入 manage.py 文件的项目路径下,执行 python manage.py makemigrations ,然后再执行 python manage.py migrate,即可将创建好的字段都映射到数据库。
论坛版块 Board
论坛话题 Topic
论坛回帖 Post
还有一点需要注意的,如果使用的 sqlite 数据库,就可以省略配置 mysql 数据库。再者,创建好的 Django 项目都会在 settings.py 文件中自动配置。
(二)
在项目路径的论坛应用中新建 forms.py 文件,用于表单渲染和表单验证;
论坛中需要用到的表单有两处,一个是创建话题,另一个是回帖。
先导入 话题 Topic 和 回帖 Post 的模型;再将需要用到的表单创建 forms 导入。
from django import forms
from .models import Topic, Post
Topic 表单
class NewTopicForm(forms.ModelForm):
# 在模板中需要注明提醒事项,可在 form 表单申明字段
message = forms.CharField(
widget=forms.Textarea(
attrs={'rows': 5, 'placeholder': '你的想法是什么?'}
),
max_length=4000,
help_text="文本描述最大长度2000字",
label="话题描述"
)
subject = forms.CharField(max_length=100, label="话题")
class Meta:
model = Topic
fields = ['subject', 'message']
forms.CharField() 中的 widget,可以设置 渲染在页面的文本域的样式,attrs 设置 文本域的属性。需要注意的是 在 Meta 中,fields 对应的字段是 Topic 中存在的字段。
回帖表单
class PostForm(forms.ModelForm):
message = forms.CharField(
widget=forms.Textarea(
attrs={'rows': 5, 'placeholder': '你的想法是什么?'}
),
max_length=4000,
help_text="文本描述最大长度2000字",
label="帖子描述"
)
class Meta:
model = Post
fields = ['message',]