[Django2.2文档阅读]HttpRequest

概览:

Django使用request和response对象来传递状态。

当请求一个页面时,django创建一个包含这个请求的metadata的HttpRequest对象,然后django加载对应的视图,将这个HttpRequest对象作为视图函数的第一个参数传递。对应的,每个视图函数都应该返回一个HttpResponse对象。

# 我的理解:Django对http请求的一些参数进行了封装,但是也添加了一些django自己的东西,后面会提到。


HttpRequst 对象:

基本参数(这里整理一些常用的):

  • HttpRequest.body:请求体 (bytes)

    raw HTTP request body,类型是bytes,使用时注意decode()。一般用来处理例如binary images、XML payload等。处理传统的表单数据,使用HttpRequest.POST。

  • HttpRequest.path:请求的url路径 (string)

  • HttpRequest.method:请求方法 (string)

  • HttpRequest.GET: 包含所有HTTP GET请求的参数,类字典(QueryDict)对象

  • HttpRequest.POST:类字典(QueryDict)对象

    包含所有通过表单提交的的POST参数。now-form data放在了HttpRequest.body中(表单提交的参数也body中也有,是bytes形式)。

  • HttpRequest.COOKIE:字典,key和value为string。

  • HttpRequest.FILE: 类字典对象。

    只有通过POST且enctype="multipart/form-data"的文件才会在这里,其他的情况(例如使用ajax),FILE为空。

  • HttpRequest.headers:类字典对象,包含http的所有首部。(django2.2中新加)


middleware设置的参数: # django添加的一些额外属性

  • HttpRequest.session: 由SessionMiddleware设置,可读可写的类字典对象,用来表示当前的session

  • HttpRequest.user:由 AuthenticationMiddleware 设置,是AUTH_USER_MODEL的实例,代表当前登录用户。如果当前没有登录用户,则是 AnonymousUser的实例。可以通过 is_authenticated来判断是否登录。

原文地址:https://www.cnblogs.com/macguz/p/14278924.html