django views中 request, response的常用操作

原创 2017年07月17日 14:03:24

以问题的形式记录一些请求和响应的常见写法,django1.8为例子,持续积累和更新中

本文地址 http://blog.csdn.net/orangleliu/article/details/75226747

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)
版权声明:本文为orangleliu (http://blog.csdn.net/orangleliu/)原创文章,自由传播,文章转载请声明, 多谢。

django http请求request详解

Django 每一个view函数的第一个参数都是request,有没想过request里面到底有什么呢?   Django使用request和response对象在系统间传递状态。 ...
  • u011510825
  • u011510825
  • 2016年03月22日 11:34
  • 4180

Django中的request.GET和request.POST

Django的views.py中定义的函数的requst参数,可以读request.method确定是POST还是GET 首先,request.GET 和 request.POST是两个对象,类...
  • u010576100
  • u010576100
  • 2015年08月10日 16:33
  • 25284

Django模板系统(非常详细)

转载:http://www.czug.org/python/django/04.html 翻译www.djangobook.com之第四章:Django模板系统 The Django...
  • zhangxinrun
  • zhangxinrun
  • 2012年10月21日 13:16
  • 149874

在Django 模板中使用session

在Django 模板中使用session 需求 实现权限管理:登录网站后,需要在页面上显示用户名,以及根据用户的角色(也存在于session中)显示不同的菜单。...
  • houmou
  • houmou
  • 2015年07月20日 18:47
  • 3979

Django学习小记[5] —— View Request/Response

在Django中,view是指一个方法,这个方法接收一个request,然后返回一个response. 当客户端发送一个请求的时候,Django会创建一个HttpRequest对象,这个对象包含...
  • hackerain
  • hackerain
  • 2014年11月04日 00:41
  • 4902

Django-rest-framework学习(二)Request与Response

Django-rest-framework学习(二)Request与Response标签(空格分隔): Django web-api pythonDjango-rest-framework学习二Req...
  • a101070096
  • a101070096
  • 2016年03月30日 23:34
  • 1418

Django的HttpRequest和HttpResponse对象

请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法。...
  • liu_yanna
  • liu_yanna
  • 2015年12月04日 14:40
  • 14678

django中HttpRequest对象

Django使用Request 对象和Response对象在系统间传递状态。 当请求一个页面时, Django会建立一个包含请求元数据的 HttpRequest 对象. 当Django 加载对应的视...
  • mbl114
  • mbl114
  • 2017年09月25日 23:33
  • 77

用Django写博客(三)编写views

接上篇,现在将数据库里面的内容反映到页面上去,我们就大功告成了, 在urls.py中配置映射到特定的处理方法中去。 我的blog.core.urls.py: urlpattern...
  • xugangjava
  • xugangjava
  • 2012年02月26日 11:53
  • 6837

views文件的作用

views文件的作用   在django中views.py 文件可是说是项目的指挥中心,其实views.py文件的作用更像是我们之前提到的MVC模式中的“C”,也就是起到了项目控制的作用。这个文件...
  • lvze0321
  • lvze0321
  • 2016年11月23日 10:50
  • 459
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:django views中 request, response的常用操作
举报原因:
原因补充:

(最多只允许输入30个字)