处理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脚本文件创建位置如下图所示: