笔记主要基于官方文档,从中提取要点和记录笔记,关键处包含了官方文档链接。详见官方文档。
官方文档:Django documentation
博客推荐:Django2.2教程
目录
Django 提供了一个丰富的框架来帮助创建表单和处理表单数据。
表单官方文档:表单;基础部分文档: 概览 | 表单 API | 内建字段 | 内建 widgets;
1.HTML表单
在HTML中,表单 <form>...</form>
可以收集其内部标签中的用户输入,然后将数据发送到服务端。
一个HTML表单必须指定两样东西:
- 目的地:用户数据发送的目的URL
- 方式:发送数据所使用的HTTP方法
以Django Admin站点登录表单的HTML为例:
<form action="/admin/login/?next=/admin/" method="post" id="login-form">
<input type='hidden' name='csrfmiddlewaretoken'
value='NNHZaDVJGduajNMECXygKZkAt8vyEcw9HS2qm2Vdf7brDZrA0qK1R0I7M2p3TKcs' />
<div class="form-row">
<label class="required" for="id_username">用户名:</label>
<input type="text" name="username" autofocus maxlength="254" required id="id_username" />
</div>
<div class="form-row">
<label class="required" for="id_password">密码:</label>
<input type="password" name="password" required id="id_password" />
<input type="hidden" name="next" value="/admin/" />
</div>
<div class="submit-row">
<label> </label> <input type="submit" value="Log in" />
</div>
</form>
- 表单数据
<form>
的action
属性指定URL,告诉浏览器表单应该发往哪里; method
属性指定HTTP方法——如post
;(GET 和 POST)- 表单包含了一些
<input>
元素:type="text"
用于用户名,type="password"
用于密码,type="submit"
用于“登录"按钮。 - 当点击
<input type="submit" value="Log in">
元素时,数据将发送给指定URL。
通常情况下,我们需要自己手动在HTML页面中,编写form标签和其内的其它元素。但这比较麻烦,Django的表单功能可以简化和自动化上述工作的大部分内容。
2.Django 中的表单
Django表单会处理涉及的三个不同部分:
- 准备并重组数据,以