2017-11-14 10:45

 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/sylvanaswindru/b-652.html

表单

HTML表单是网站交互性的经典方式。 本章将介绍如何用Django对用户提交的表单数据进行处理。


HTTP 请求

HTTP协议以"请求-回复"的方式工作。客户发送请求时,可以在请求中附加数据。服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务。

GET 方法

我们在之前的项目中创建一个 search.py 文件,用于接收用户的请求:

image.png

在模板目录 templates 中添加 search_form.html 表单:

image.png

urls.py 规则修改为如下形式:

image.png

访问地址 http://127.0.0.1:8000/search-form 并搜索,结果如下所示:

1510627074678316.jpg









POST 方法

上面我们使用了GET方法。视图显示和请求处理分成两个函数处理。

提交数据时更常用POST方法。我们下面使用该方法,并用一个URL和处理函数,同时显示视图和处理请求。

我们在tmplate 创建 post.html:

image.png

在模板的末尾,我们增加一个 rlt 记号,为表格处理结果预留位置。

表格后面还有一个{% csrf_token %}的标签。csrf 全称是 Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能。POST 方法提交的表格,必须有此标签。

在HelloWorld目录下新建 search2.py 文件并使用 search_post 函数来处理 POST 请求:

image.png

urls.py 规则修改为如下形式:

image.png

访问 http://127.0.0.1:8000/search-post 显示结果如下:

image.png

完成以上实例后,我们的目录结构为:

image.png


Request 对象

每个 view 函数的第一个参数是一个 HttpRequest 对象,就像下面这个 hello() 函数:

image.png

HttpRequest对象包含当前请求URL的一些信息:

image.png

image.png

Request对象也有一些有用的方法:

image.png

Request对象也有一些有用的方法:

image.png

QueryDict对象

在HttpRequest对象中, GET和POST属性是django.http.QueryDict类的实例。

QueryDict类似字典的自定义类,用来处理单键对应多值的情况。

QueryDict实现所有标准的词典方法。还包括一些特有的方法:

image.png

此外, QueryDict也有一些方法,如下表:

image.png

 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/sylvanaswindru/b-652.html

评论