对django views中 request, response的常用操作详解


Posted in Python onJuly 17, 2019

request

获取post请求中的json数据

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

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

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

# url http://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, from django.http import JsonResponse 就可以使用了,低版本的django可以参照源码自己写一个,几行代码就行了。 response 中设置 cookies 和 header

def xxxxview(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
 return resp

session

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

def post_comment(request, new_comment):
 if request.session.get('has_commented', False):
 return HttpResponse("You've already commented.")
 c = comments.Comment(comment=new_comment)
 c.save()
 request.session['has_commented'] = True
 return HttpResponse('Thanks for your comment!')

def logout(request):
 try:
 del request.session['member_id']
 except KeyError:
 pass
 return HttpResponse("You're logged out.")

cookies

def login(request):
 response = HttpResponseRedirect('/url/to_your_home_page')
 response.set_cookie('cookie_name1', 'cookie_name1_value')
 response.set_cookie('cookie_name2', 'cookie_name2_value')
 return response

def logout(request):
 response = HttpResponseRedirect('/url/to_your_login')
 response.delete_cookie('cookie_name1')
 response.delete_cookie('cookie_name2')
 return response

# 获取
coo = request.COOKIES.get('coofilter')
# cookies 过期时间
hr.set_cookie('user_id', user_id, max_age=300)

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

Python 相关文章推荐
python 远程统计文件代码分享
May 14 Python
python实现给数组按片赋值的方法
Jul 28 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
python实现RabbitMQ的消息队列的示例代码
Nov 08 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
Python中一般处理中文的几种方法
Mar 06 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
Python实现自动访问网页的例子
Feb 21 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
Oct 27 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
python语言实现贪吃蛇游戏
Nov 13 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 #Python
python递归法解决棋盘分割问题
Jul 17 #Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 #Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 #Python
python递归法实现简易连连看小游戏
Mar 25 #Python
django2笔记之路由path语法的实现
Jul 17 #Python
Django之创建引擎索引报错及解决详解
Jul 17 #Python
You might like
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
PHP中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
PHP基本语法总结
2014/09/06 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
php字符集转换
2017/01/23 PHP
浅谈PHP的反射API
2017/02/26 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
python导入模块交叉引用的方法
2019/01/19 Python
python os模块简单应用示例
2019/05/23 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
python pycharm的安装及其使用
2019/10/11 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
QML实现钟表效果
2020/06/02 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
会计自我鉴定范文
2013/10/06 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
工程部岗位职责范本
2015/04/11 职场文书
项目验收申请报告
2015/05/15 职场文书
房产电话营销开场白
2015/05/29 职场文书
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL