How Django process a request
- Django决定使用root URLconf模块。即项目名.urls
- Django 加载1中Python模块,寻找urlpattens变量.urlpatterns变量是
django.conf.urls.url()
的实例列表。 - django 顺序遍历每一个urlpattern, 直到找到一个(第一个)与请求的URL匹配的urlpattern
- 一旦找到匹配的正则,django就去imports and calls给定的view(一个Python 函数或者class based view),并传入如下参数: 1) 一个HttpRequest实例,2) 如果匹配的正则表达式没有返回named groups 就将它作为位置参数。3)由正则表达式中named groups组成的kwarg,被任何在
django.conf.urls.url()
中指定的kwarg 参数重写。 - 如果没有正则相匹配,或者在这中间的任何时刻出现异常,django都会去调用合适的错误处理视图.