上一小节我们成功从客户端访问的url中提取到了路径信息,但是路径里面包含的自定义信息毕竟少,更多的时候是通过查询参数和POST上去的内容。那么这一小节我们就来看看如何获取这些信息。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
操作环境
先总结下我的操作环境:
- Centos 7
- Python 3.7
- Pycharm 2019.3
- Django 2.2
因为Django长期支持版本2.2LTS和前一个长期支持版本1.11LTS有许多地方不一样,需要小心区分。
获取url的查询参数信息
实际场景的路径信息是不太频繁变换的,更多的请求信息都在查询参数当中,如果是POST场景下甚至都不在url里面。这些信息要怎么获取呢?需要借助于Django中的Request和Response对象了。这一节我们来认识一下这个Request对象,后面的小节我们再看Response。
Request和Response的详细说明可以参考官方文档
不管是GET或是POST方法,都会创建一个HttpRequest对象,Django会将这个对象传递给view函数的第一个参数request。同时每个view函数返回的一定是一个HttpResponse对象。
即使是render方法,返回的也是一个HttpResponse对象
通过这个HttpRequest对象的属性,不仅可以获得我们上面提到的信息,还有很多额外的东西可以提取出来。我们用实例来感受下。
创建路由以及view函数如下
path('sendrequest/',views.sendrequest),
def sendrequest(request):
print(request.path)
print(request.body)
print(request.method)
print(request.GET)
print(request.POST)
print(request.get_full_path())
print(request.headers)
return HttpResponse('Request Success.')
如果只是简单访问http://127.0.0.1:8000/two/sendrequest/
,打印出来的内容如下
/two/sendrequest/
b''
GET
<QueryDict: {}>
<QueryDict: {}>
/two/sendrequest/
{'Content-Length': '', 'Content-Type':