Django的请求过程

当客户端访问服务器,进行了一个http请求,也就是用户访问了一个url时,发生了如下的事情:

如果是以GET方法请求(请求时要用到的数据放在url路径里),Django会从url中取出访问时所需的数据,通过request.GET字典操作

如果以POST方法请求(请求时要用到的数据放在请求体里),Django会从请求体里取出访问时所需的数据,通过request.POST字典操作

request.POST虽然是一个字典,但是其本源是request.body,reqeust.body是原生的请求体,是字符串,request.POST是在request.body的基础上处理得到的

经过上述操作之后,Django再通过url正则进行匹配,匹配顺序从上到下,第一次匹配成功后即执行对应视图函数,就不再匹配,所以写url时要注意写$符号,以免出现后续问题

上述的Http请求,被WSGI封装,传给了视图函数中的那个必须要有的参数:request

这种路由对应视图函数的模式成为FBV模式

还有一种路由对应类的模式称为CBV模式,在views的类中定义一些方法,Django为我们提供了get和post两个方法名,如果以GET方式请求,则自动触发类中的get方法,POST方式触发post方法,但前提是views中的类要继承django.views中的Views类才可以这样使用

而且在写url时,要在类后面加as_view()方法,例如:views.类名.as_view()

猜你喜欢

转载自www.cnblogs.com/zhangzhaoyu/p/9234381.html