每个view函数的第一个参数是一个HttpRequest对象。
HttpRequest对象包含当前请求URL的一些信息:
属性 | 描述 | ||||||||||||||||
path | 请求页面的全路径,不包括域名'/hello/' | ||||||||||||||||
method | 请求中使用的HTTP方法的字符串表示。全大写表示。例如: if request.method == 'GET': do_something()elif request.method == 'POST': do_something_else() | ||||||||||||||||
GET | 包含所有HTTP GET参数的类字典对象。
| ||||||||||||||||
POST | 包含所有HTTP POST参数的类字典对象 服务器收到空的POST请求的情况也是有可能发生的。也就是说,表单form通过HTTP POST方法提交请求,但是表单中可以没有数据。因此,不能使用语句if request.POST来判断是否使用HTTP POST方法;应该使用if request.method == "POST" (参见本表的method属性)。 注意: POST不包括file-upload信息。参见FILES属性。 | ||||||||||||||||
REQUEST | 该属性是POST和GET属性的集合体,但是有特殊性,先查找POST属性,然后再查找GET属性。强烈建议使用GET and POST,因为这两个属性更加显式化,写出的代码也更易理解。 | ||||||||||||||||
COOKIES | 包含所有cookies的标准Python字典对象。Keys和values都是字符串 | ||||||||||||||||
FILES | 包含所有上传文件的类字典对象。FILES中的每个Key都是<input type="file" name="" />标签中name属性的值. FILES中的每个value 同时也是一个标准Python字典对象,包含下面三个Keys:
注意:只有在请求方法是POST,并且请求页面中<form>有enctype="multipart/form-data"属性时FILES才拥有数据。否则,FILES 是一个空字典 | ||||||||||||||||
META | 包含所有可用HTTP头部信息的字典。 例如:
META中这些头加上前缀HTTP_为key: 例如:
| ||||||||||||||||
user | 是一个django.contrib.auth.models.User 对象,代表当前登录的用户。 如果访问用户当前没有登录,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。 你可以通过user的is_authenticated()方法来辨别用户是否登录:
if request.user.is_authenticated(): # Do something for logged-in users. else: # Do something for anonymous users. 只有激活Django中的AuthenticationMiddleware时该属性才可用 | ||||||||||||||||
session | 唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用。 | ||||||||||||||||
raw_post_data | 原始HTTP POST数据,未解析过。 高级处理时会有用处。 | ||||||||||||||||
__getitem__(key) | 返回GET/POST的键值。特殊字典方法 | ||||||||||||||||
has_key() | 检查request.GET or request.POST中是否包含参数key | ||||||||||||||||
get_full_path() | 返回包含查询字符串的请求路径 | ||||||||||||||||
is_secure() | 判断是否是HTTPS请求 | ||||||||||||||||
QueryDict对象 QueryDict类似字典的自定义类,用来处理单键对应多值的情况 | |||||||||||||||||
__getitem__ | 如果Key对应多个Value,__getitem__()返回最后一个value。 | ||||||||||||||||
__setitem__ | 设置参数指定key的value列表(一个Python list)。注意:它只能在一个mutable QueryDict 对象上被调用(就是通过copy()产生的一个QueryDict对象的拷贝). | ||||||||||||||||
get() | 如果key对应多个value,get()返回最后一个value | ||||||||||||||||
update() | 参数可以是QueryDict,也可以是标准字典。和标准字典的update方法不同,该方法添加字典 items,而不是替换它们>>> q = QueryDict('a=1') >>> q = q.copy() # to make it mutable >>> q.update({ 'a': '2'}) >>> q.getlist('a') ['1', '2'] >>> q['a'] # returns the last ['2'] | ||||||||||||||||
items() | 和标准字典的items()方法有一点不同,该方法使用单值逻辑的__getitem__(): 获取最后一个值的列表.>>> q = QueryDict('a=1&a=2&a=3') >>> q.items() [('a', '3')] | ||||||||||||||||
values() | 和标准字典的values()方法有一点不同,该方法使用单值逻辑的__getitem__(): | ||||||||||||||||
|
|