Django的请求流程(url)

一、Django是怎么处理请求的?

  当你通过在浏览器里敲http://127.0.0.1:8000/hello/来访问Hello world消息得时候,Django在后台有些什么动作呢?

  所有均开始于setting文件。当你运行python manage.py runserver,脚本将在于manage.py同一个目录下查
找名为setting.py的文件。这个文件包含了所有有关这个Django项目的配置信息,均大写: TEMPLATE_DIRS
, DATABASE_NAME , 等. 最重要的设置时ROOT_URLCONF,它将作为URLconf告诉Django在这个站点中那
些Python的模块将被用到.

自动创建的settings.py包含一个ROOT_URLCONF配置用来指向自动产生的urls.py. 打开文件settings.py你将看到如下:

 ROOT_URLCONF = 'django_day18.urls'

当创建django的项目完成时,会有三个文件,settings.py   urls.py  wsgi.py,其中urls.py就是主要用来处理请求的文件。

当访问 url /hello/ 时,Django 根据 ROOT_URLCONF 的设置装载 URLconf 。

其实就是当请求来到时,Django会根据settings.py里ROOT_URLCONF = 'django_day18.urls',找到urls.py.然后轮询此文件里所有

的urlpatterns。直到匹配到第一个与请求的url /hello/相同的url条目为止。找到的这个 URLpatterns就调用相关联的view函数

来看一下urls.py文件下的内容:

 from django.conf.urls import include, url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.login), url(r'^home/', views.home),
url(r'^index/', views.index),
]

可以看到,文件里面导入了views中的函数方法,以此建立了与urls的联系。

这是views.py文件内容:

 from django.shortcuts import render,HttpResponse,redirect

 # Create your views here.

 def index(request):
print "index"
return HttpResponse('ok')

正则方式的URL映射:

Django的请求流程(url)

Django的请求流程(url)

总结一下:

  1. 进来的请求转入/hello/.

  2. Django通过在ROOT_URLCONF配置来决定根URLconf.

  3. Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。

  4. 如果找到匹配,将调用相应的视图函数

  5. 视图函数返回一个HttpResponse

  6. Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来

Django的请求流程(url)

上一篇:Looksery Cup 2015 F - Yura and Developers 单调栈+启发式合并


下一篇:mysql中group by 的用法解析