Request对象
从Request对象中获取数据:
URL相关信息
HttpRequest对象包含当前请求URL的一些信息, 可以用以下方式获取:
属性/方法 | 说明 | 输出举例 |
---|---|---|
request.path | 除域名以外的请求路径,以正斜杠开头 | "/hello/" |
request.get_host() | 主机名(比如,通常所说的域名) | "127.0.0.1:8000" or "www.example.com" |
request.get_full_path() | 请求路径,可能包含查询字符串 | "/hello/?print=true" |
request.is_secure() | 如果通过HTTPS访问,则此方法返回True, 否则返回False True 或者 False | $1 |
request.META
request.META 是一个Python字典,包含了所有本次HTTP请求的Header信息,比如用户IP地址和用户Agent(通常是浏览器的名称和版本号)。 注意,Header信息的完整列表取决于用户所发送的Header信息和服务器端设置的Header信息。 这个字典中几个常见的键值有:
HTTP_REFERER,进站前链接网页,如果有的话。 (请注意,它是REFERRER的笔误。)
HTTP_USER_AGENT,用户浏览器的user-agent字符串,如果有的话。 例如: "Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17" .
REMOTE_ADDR 客户端IP,如:"12.345.67.89" 。(如果申请是经过代理服务器的话,那么它可能是以逗号分割的多个IP地址,如:"12.345.67.89,23.456.78.90" 。)
//META数据获取实例
def ua_display_bad(request):
ua = request.META['HTTP_USER_AGENT'] # Might raise KeyError!
return HttpResponse("Your browser is %s" % ua)
request.POST
request.POST
是一个类字典对象,让你可以通过关键字的名字获取提交的数据。
注意,Django 还以同样的方式提供 request.GET
用于访问 GET 数据 —— 但我们在代码中显式地使用 request.POST
,以保证数据只能通过 POST 调用改动。
如果post没有获取到变量传入, 则会引发一个 KeyError
//获取传入的参数choice
choice = request.POST['choice']
表单
表单操作流程官方教材已经很详细, 不需要另外补充:
https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial04/