对django views中 request, response的常用操作详解
request
获取post请求中的json数据
defhello(request): data=json.loads(request.body) ...
json格式还有一些非表单序列化的格式,都可以从request.body中获取请求体中的数据,对于ajax请求可以使用request.is_ajax()来判断
根据请求的信息获取baseurl(有时候服务的域名比较多,还是需要动态的拼接一下url信息)
#urlhttp://wificdn.com:8888/wxpay/qrcode2/16122010404238801544?name=lzz
request.get_host()#wificdn.com:8888
request.get_full_path()#u'/wxpay/qrcode2/16122010404238801544?name=lzz'
request.build_absolute_uri('/')#'http://wificdn.com:8888/'
request.build_absolute_uri('/hello')#'http://wificdn.com:8888/hello'
request.build_absolute_uri()#'http://wificdn.com:8888/wxpay/qrcode2/16122010404238801544?name=lzz'
request.path#u'/wxpay/qrcode2/16122010404238801544'
request.scheme#'http'
获取表单中选中的checkbox信息,例如checkbox的name为checks
var_list=request.POST.getlist('checks')
返回的是个list对象,如果没有��️返回[],如果表单中没有这个key也返回[]
response
json格式的响应1.8版本中已经提供了JsonResponse,fromdjango.httpimportJsonResponse就可以使用了,低版本的django可以参照源码自己写一个,几行代码就行了。response中设置cookies和header
defxxxxview(request):
....
resp=HttpResponseRedirect('/account/portal/?token=%s'%es)
resp.set_cookie("coofilter",es,max_age=300)
resp['Erya-Net-Type']=NET_TYPE
resp['Erya-Auth-Host']=AUTH_HOST
resp['Erya-Auth-Port']=AUTH_PORT
resp['Erya-Auth-Uip']=ip
resp['Erya-Auth-Token']=es
returnresp
session
howtousesession,主要是get和set,和删除
defpost_comment(request,new_comment):
ifrequest.session.get('has_commented',False):
returnHttpResponse("You'vealreadycommented.")
c=comments.Comment(comment=new_comment)
c.save()
request.session['has_commented']=True
returnHttpResponse('Thanksforyourcomment!')
deflogout(request):
try:
delrequest.session['member_id']
exceptKeyError:
pass
returnHttpResponse("You'reloggedout.")
cookies
deflogin(request):
response=HttpResponseRedirect('/url/to_your_home_page')
response.set_cookie('cookie_name1','cookie_name1_value')
response.set_cookie('cookie_name2','cookie_name2_value')
returnresponse
deflogout(request):
response=HttpResponseRedirect('/url/to_your_login')
response.delete_cookie('cookie_name1')
response.delete_cookie('cookie_name2')
returnresponse
#获取
coo=request.COOKIES.get('coofilter')
#cookies过期时间
hr.set_cookie('user_id',user_id,max_age=300)
以上这篇对djangoviews中request,response的常用操作详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。