除了做网站只是为了发布消息,不接收来自访问者的输入信息的情形,form是一个必须要掌握的存在。
Django提供了一些相关的工具使得Form的和游客的交互更加便利。学会如何使用form很重要。
HTML表单
在HTML中,表单是一系列元素的集合,这些元素被<form>...</form>
所包裹。允许用户进行输入文本,选择选项,操作或者控制对象等,然后将这些数据返回给服务器。
这些表单的一些接口元素-text input
,checkboxes
-都非常简单并且都是HTML内置的元素。其他的一些就比较复杂了。比如一个日期选择器,滑块控制控件等都是使用JavaScript
和CSS
来实现。
和<input>
一样,表单必须定义两件事:
where:用户输入数据的返回的URL
how: 传递数据用到的HTTP方法
做为例子,Django的login表单包含 很多<input>
元素:一个是type = "text"
的username
,一个是type = password
的password
。还有一个type = submit
的Login
按钮。它同样包含一些用户不可见的隐藏字段,这些字段提供给Django为下一步做出决定。
表单通过其属性action
来传递给表单要发送表单数据的URL地址。例如管理员用户的URL为/admin
。
当<input type='submit' value='Log in'>
元素被触发,数据就会返回给admin
这条URL。
GET和POST
GET和POST被用来处理表单。
Django的login表单通过POST方法来返回绑定的数据,并对数据进行编码,将其发送到服务器端,然后从服务器获得响应。
与POST方法相反,GET方法将输入的数据存储在一个字符串里,并用这个字符串来组成url。url包含数据发送往的URL地址。
POST和GET适用于不同的应用场景。
任何请求都可以被用来改变系统的状态,例如