django views中 request, response的常用操作
以问题的形式记录一些请求和响应的常见写法,django1.8为例子,持续积累和更新中本文地址 http://blog.csdn.net/orangleliu/article/details/75226747
request
- 获取post请求中的json数据
def hello(request):
data = https://www.it610.com/article/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 【django views中 request, response的常用操作】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 responsedef 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)
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理