概览:
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来判断是否登录。