Pycharm上Django的使用 Day7

本文详细介绍如何在Django中创建表单,包括使用ModelForm简化表单创建过程,定义URL模式,编写视图函数处理表单数据并保存至数据库,以及在模板中呈现表单。同时,文章还介绍了如何在页面中添加链接以引导用户至表单填写页面。

1.让用户能够输入数据

当前,只有超级用户能够通过管理网站输入数据,我们不想让用户与管理网站交互,因此我们将使用Django的表单创建工具来创建让用户能够输入数据的页面

1>创建用于添加主题的表单

在Django中,创建表单的最简单方式是使用ModelForm,它根据我们在models.py中的信息自动创建表单。创建一个名为forms.py的文件,并存储到models.py所在的目录中

c2f1a26df712b168a001dd7bb984919d599.jpg

1处导入模块forms以及要使用的模型Topic。

2处根据模型Topic创建一个表单,该表单只包含字段text

4处让Django不要为字段text生成标签

2>定义new_topic的URL模式

b04482f438248c1b183b7201d1ed4dab766.jpg

将请求交给视图函数new_topic()

3>编写视图函数new_topic()

3b1903caac869c2a9e4df1420472d07c60f.jpg

导入HttpResponseRedirect类,用户提交主题后将使用这个类将用户重定向到网页topics,函数reverse()根据指定的URL模型确定URL

1处的测试确定请求方法是GET还是POST。如果请求方法不是POST,那就可能是GET,因此我们要返回一个空表单

2处创建一个TopicForm实例,将其存储在变量form中,再通过上下文字典将这个表单发送给模板(7处)

如果请求方法是POST,将执行else代码块,3处使用用户输入的数据创建一个TopicForm实例form

4处检查提交的数据是否有效;5处表示调用save()将表单中的数据写入数据库

6处使用reverse()获取页面topics的URL,并将其传递给HttpResponseRedirect()

4>创建模板new_topic

249473a1081535b2ae8bd100191b01fa20e.jpg

1处定义了一个HTML表单,实参action告诉服务器将提交的表单数据发送到视图函数new_topic(),实参method让浏览器以POST方式提交数据

2处使用模板标签{% csrf_token %}来防止攻击者利用表单来获取对服务器未经授权的访问

3处用于显示表单

4处定义一个提交按钮

5>在页面topics中添加一个到页面new_topic的链接

14079d8f63d7e8385a315032cc6594dd388.jpg

6>运行manage.py

bd5517e5ef365747360516f7a091869de0a.jpg

d186d0a131e8534d88c83daa44282fb7561.jpg

699ec0709549cd4cc17d194ede23a08a04b.jpg

转载于:https://my.oschina.net/u/4011629/blog/2878736

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值