首页 > 其他分享 >1010.请求与响应

1010.请求与响应

时间:2023-01-08 16:35:41浏览次数:34  
标签:请求 GET -- 表单 响应 对象 参数 POST 1010

一、HttpResquest对象

HttpRequest对象:服务器接受到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块定义了HttpRequest对象的API。

属性:

path:一个字符串,表示请求的页面的完整路径,不包含域名;

method:一个字符串,表示请求使用的HTTP方法,常用值包含:“GET”,“POST”;

encoding:一个字符串,表示提交的数据的编码方式;

如果为None则表示使用浏览器的默认设置,一般为utf-8;

这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值;

GET:一个类似于字典的对象,包含get请求方式的所有参数;

POST:一个类似于字典的对象,包含post请求方式的所有参数;

FILES:一个类似于字典的对象,包含所有的上传方式;

COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串;

session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django启用会话的支持时才可用,详细内容见“状态保持”

方法:is_ajax():如果请求是通过XMLHttpRequest发起的,则返回True。

二、GET和POST请求

form标签中的GET和POST:

在HTML中,from表单的作用是手机标签中的内容,<from>...<from>中间可以由访问者添加类似于文本,选择,或者一些控制模块等等,然后这些内容将会被送到服务端。

一个表单必须制定两样东西:

1. form的method参数用于设置表单的提交方式,默认使用POST;

2. action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL。

 

 

 form表单使用get方式提交的例子:

在上面的视图中渲染模板,下面的视图处理提交的数据。

 

 

 urls.py的配置

 

 

 get方式提交的数据会在url中显示出来。

 

 

1. get提交的参数会在url中显示;

2. 可以通过request.GET.get的方式来获取提交的参数。

form表单使用post方式提交的例子:

视图函数:

 

 

 urls.py的配置:

 

 

 post方式提交的数据不会在url中显示。

1. post的提交方式不会在url中显示参数;

2. 可以通过request.POST.get方式来获取提交的数据。

一键多值的getlist方法:

request对象的属性GET、POST都是QueryDict类型的对象与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况

--方法get():根据键获取值,只能获取键的一个值;如果一个键同时拥有多个值,获取最后一个值;

--方法getlist():根据键获取值将键的值以列表返回,可以获取一个键的多个值。

在模板中写上携带get参数的url。

 

 

 视图中获取参数:

 

 

 request中GET和POST对象的属性:

GET属性

--QueryDict类型的对象;--包含get请求方式的所有参数;--与url请求地址中的参数对应,位于?后面;--参数的格式是键值对,如key1=value1;--多个参数之间,使用&连接,如key1=value1&key2=value2;

POST属性

--QueryDict类型的对象;--包含post请求方式的所有参数;--与form表单中的空间对应;--表单中控件要有name属性,则name属性的值为键,value属性的值为值,构成键值对提交;--对于checkbox控件,name属性一样为一组,当控件被选中后会被提交,存在一键多值的情况。

GET和PSOT请求方式总结:

1. GET:GET如其名,是从服务器获取数据,不会更改服务器的状态和数据,在URL中携带参数发送给服务器。

2. POST则是将一定量的数据发送给服务器,一般会更改服务器的数据。

3. POST方法的参数不能在URL当中看到,他是通过body参数传递给服务器的,所有相对GET方式直接能在URL当中看到传递的参数,显得更加安全一些,当然,也不能简单的判定POST方式比GET方法更安全,要使网站保持安全,需要做更多的安全处理。

三、类视图

View类视图以请求方式为类方法:在对应的方式下面编写对应的逻辑函数。

 

 

 View类视图的引用:在urls.py中配置路由是通过:as_view()

四、文件上传

Django在处理上传的时候,文件数据被保存在了request,FILES,FILES中的每个键为<input type=“file” name=""/>中的name

设置文件的存储路径:

1. 在项目跟目录下static中创建media文件夹;

2. 图片上传后,会被保存到“/static/media/文件”

3. 打开settings.py文件,增加media_root项。

 

 

 文件上传form表单中:

FILES只有在请求的方式为POST且提交的<form>带有enctype=“multipart/form-data”的情况下才会包含数据。否则,FILES将为一个空的类似于字典的对象。

 

 

 文件上传视图函数:

 

五、HttpResponse对象

HttpResponse对象:

属性:

content:表示返回的内容,字符串类型;

charset:表示response采用的编码字符集,字符串类型;

status_code:响应的HTTP响应状态码;

content-type:制定输出的MIME类型。

方法:

init:使用页内容实例化HttpResponse对象;

write(content):以文件的方式写;

flush():以文件的方式输出缓存区;

set_cookie(key, value=' ', max_age=None, expires=None): 设置Cookie、key、value都是字符串类型;

max_age:是一个整数,表示在制定秒数后过期;

expires:是一个datetime或timedelta对象,会话将在这个制定的日期/时间过期,注意datetime和timedelta值只有在使用PickleSerializer时才可序列化;

max_age与expires二选一;

如果不指定过期时间,则关闭浏览器就失效。

delete_cookie(key):删除制定的key的Cookie,如果key不存在则什么也不发生。

HttpResponse的子类:

返回数据的响应函数有:

HttpResponse() 返回简单的字符串对象;

render() 渲染模板;

redirect() 重定向;

JsonResponse() 返回json数据。

 

 --帮助用户创建JSON编码的响应;--参数data是字典对象;--JsonResponse的默认Content-Type为application/json。

 

标签:请求,GET,--,表单,响应,对象,参数,POST,1010
From: https://www.cnblogs.com/lxinghua/p/17034816.html

相关文章