经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Django » 查看文章
对django views中 request, response的常用操作详解
来源:jb51  时间:2019/7/18 8:36:47  对本文有异议

request

获取post请求中的json数据

  1. def hello(request):
  2. data = json.loads(request.body)
  3. ...

json格式还有一些 非表单序列化 的格式,都可以从 request.body 中获取请求体中的数据,对于ajax请求可以使用 request.is_ajax() 来判断

根据请求的信息获取base url(有时候服务的域名比较多,还是需要动态的拼接一下url信息)

  1. # url http://wificdn.com:8888/wxpay/qrcode2/16122010404238801544?name=lzz
  2. request.get_host() # wificdn.com:8888
  3. request.get_full_path() # u'/wxpay/qrcode2/16122010404238801544?name=lzz'
  4.  
  5. request.build_absolute_uri('/') # 'http://wificdn.com:8888/'
  6. request.build_absolute_uri('/hello') # 'http://wificdn.com:8888/hello'
  7. request.build_absolute_uri() # 'http://wificdn.com:8888/wxpay/qrcode2/16122010404238801544?name=lzz'
  8.  
  9. request.path # u'/wxpay/qrcode2/16122010404238801544'
  10. request.scheme # 'http'

获取表单中选中的 checkbox 信息, 例如checkbox的name为 checks

  1. var_list = request.POST.getlist('checks')

返回的是个list对象,如果没有��️返回 [] ,如果表单中没有这个key也返回 []

response

json格式的响应 1.8版本中已经提供了 JsonResponse, from django.http import JsonResponse 就可以使用了,低版本的django可以参照源码自己写一个,几行代码就行了。 response 中设置 cookies 和 header

  1. def xxxxview(request):
  2. ....
  3.  
  4. resp = HttpResponseRedirect('/account/portal/?token=%s' % es)
  5. resp.set_cookie("coofilter", es, max_age=300)
  6. resp['Erya-Net-Type'] = NET_TYPE
  7. resp['Erya-Auth-Host'] = AUTH_HOST
  8. resp['Erya-Auth-Port'] = AUTH_PORT
  9. resp['Erya-Auth-Uip'] = ip
  10. resp['Erya-Auth-Token'] = es
  11. return resp

session

how to use session, 主要是get和set,和删除

  1. def post_comment(request, new_comment):
  2. if request.session.get('has_commented', False):
  3. return HttpResponse("You've already commented.")
  4. c = comments.Comment(comment=new_comment)
  5. c.save()
  6. request.session['has_commented'] = True
  7. return HttpResponse('Thanks for your comment!')
  8.  
  9. def logout(request):
  10. try:
  11. del request.session['member_id']
  12. except KeyError:
  13. pass
  14. return HttpResponse("You're logged out.")

cookies

  1. def login(request):
  2. response = HttpResponseRedirect('/url/to_your_home_page')
  3. response.set_cookie('cookie_name1', 'cookie_name1_value')
  4. response.set_cookie('cookie_name2', 'cookie_name2_value')
  5. return response
  6.  
  7. def logout(request):
  8. response = HttpResponseRedirect('/url/to_your_login')
  9. response.delete_cookie('cookie_name1')
  10. response.delete_cookie('cookie_name2')
  11. return response
  12.  
  13. # 获取
  14. coo = request.COOKIES.get('coofilter')
  15. # cookies 过期时间
  16. hr.set_cookie('user_id', user_id, max_age=300)

以上这篇对django views中 request, response的常用操作详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号