首页 > 技术文章 > django视图获取用户请求信息以及请求头

xone 2017-04-14 14:44 原文

 request可以直接在前端用,不需要在render里再定义。

 

 

request.body  //前端页面数据内容的原生值。如果前端不是从POST,GET,FILES里面获取的数据,就从body里获取

  request.POST  //从request.body里拿数据再封装到request.POST里面

  request.FILES  //从request.body里拿数据再封装到request.FILES里面

  request.GET  //从request.body里拿数据再封装到request.GET里面

  request.XXX.getlist  //获取列表

        request.post.getlist  //获取列表

 

request.Meta  (request headers)  //获取请求头相关的信息。

  request.method  //请求方法

  request.path_info  //获取URL

  request.COOKIES  //获取cookies

 

cookie信息或在rep里添加的键值对将会写到response headers里面

a= 'python'

rep = HttpResponse(...) 或 rep = render(request, ...)或rep =redirect('/index/')

 

a= 'python'

rep = HttpResponse(a)

rep['name'] = 'zhou'

rep.set_cookie()

return rep

 

HttpResponse可以返回字节和字符串

 

def index(request):
    from django.core.handlers.wsgi import WSGIRequest
    print(type(request))

    print(request.environ)
    for k,v in request.environ.items():  //查看所有用户请求信息 
print(k,v) print(request.environ['HTTP_USER_AGENT'])  //查看请求终端类型
return HttpResponse('OK')

 

用HttpResponse发送图片

urls

    url(r'^image.html', views.get_image),

 

视图函数

def get_image(request):
    with open('static/imgs/16.jpg','rb') as fp:
        data = fp.read()
    return HttpResponse(data)

 

前端html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<img src="/image.html">

</body>
</html>

 

CBV

实例:

视图函数

from django.views import View
class Home(View):

    def dispatch(self, request, *args, **kwargs):
        print('before')
        result = super(Home,self).dispatch(request,*args,**kwargs)
        print('after')
        return result

    def get(self,request):  # GET方式提交
        print('get')

        return render(request,'home.html')

    def post(self,request):  # POST方式提交
        print('post')

        return render(request,'home.html')

 

urls

urlpatterns = [

    url(r'^home/', views.Home.as_view()),

]

 

推荐阅读