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你将看到如下:

1 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文件下的内容:

 1 from django.conf.urls import include, url
 2 from django.contrib import admin
 3 from app01 import views
 4 
 5 urlpatterns = [
 6     url(r'^admin/', admin.site.urls),
 7     url(r'^login/', views.login), 8     url(r'^home/', views.home),
 9     url(r'^index/', views.index),
11 ]

 

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

这是views.py文件内容:

1 from django.shortcuts import render,HttpResponse,redirect
2 
3 # Create your views here.
4 
5 def index(request):
6     print "index"
7     return HttpResponse('ok')

 

正则方式的URL映射:

 

 

 

总结一下:

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


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


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


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


  5. 视图函数返回一个HttpResponse


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

 

 

posted on 2016-03-14 22:38 让我们忘了那片海 阅读(...) 评论(...) 编辑 收藏

导航