处理HTTP请求

处理HTTP请求


当客户端浏览器通过URL访问web应用时,首先要做的就是获取用户提交的信息,也就是从HTTP请求数据中获得的信息。HTTP请求数据分为HTTP请求头和Body

HTTP请求头包含了一些HTTP请求字段和HTTP GET字段

Body中可以包含任何类型的数据,包含HTTP GET字段、HTTP POST字段,下面只介绍HTTP GET字段,后面再说HTTP POST字段

如果要获得某个HTTP请求字段的值,需要使用META属性,改属性与GET属性一样,也是一个字典类型,里面包含了所有HTTP请求头字典,

HTTP请求头字段并不一定在任何情况下都有值,所以在获取HTTP请求头字段值时要注意这一点


本例演示了利用路由函数的request参数获取HTTP请求头字段信息以及HTTP GET请求字段值,


1、首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html

2、在工程的Firstdjango目录中建立一个request.py脚本文件,然后在request.py文件中添加如下内容:

from django.http import HttpResponse
def myRequest(request):
    response = 'scheme' + request.scheme + '<br>'
    response += 'path:'+ request.path + '<br>'
    response += 'method:' + request.method +  '<br>'
    # 下面代码获取HTTP请求头信息
    response += 'HTTP_ACCEPT:' + request.META['HTTP_ACCEPT'] + '<br>'
    response += 'HTTP_USER_AGENT:' + request.META['HTTP_USER_AGENT'] + '<br>'
    response += 'REMOTE_ADDR:' + request.META['REMOTE_ADDR'] + '<br>'
    response += 'QUERY_STRING:' + request.META['QUERY_STRING'] + '<br>'
    #获取name字段的值
    response += 'name:' + str(request.GET['name'])+ '<br>'
    #获取age字段值
    response += 'age:' + str(request.GET.get('age'))+ '<br>'
    return HttpResponse(response)


3、然后在Firstdjango目录中找到urls.py脚本文件,用下面的代码代替urls.py脚本里面的内容:

from django.conf.urls import url
from . import request
urlpatterns=[
    url(r'^request$',request.myRequest),
]


4、启动django工程

如果已经启动了django工程,就不需要再次启动,django会自动加载修改的内容

浏览器访问

http://127.0.0.1:8000/request?name=Bill

schemehttp
path:/request
method:GET
HTTP_ACCEPT:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
HTTP_USER_AGENT:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
REMOTE_ADDR:127.0.0.1
QUERY_STRING:name=Bill
name:Bill
age:None


由于META属性和GET属性都是字典类型,所以如果使用中括号形式([...])获取key对应的值,当这个值不存在时,会抛出异常。可以使用try...catch语句捕捉异常,

也可以使用get(...)方法获取key的值。如果key不存在,get(...)方法返回None


5、上面建立request.py脚本文件创建位置如下图所示:


 

posted @ 2019-02-18 14:47  effortsing  阅读(415)  评论(0编辑  收藏  举报