• 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显示出来

     

     

  • 相关阅读:
    运维常用python库&模块
    find&正则表达式
    博客园背景粒子连线代码
    xshell几款绝佳配色方案
    解决ssh连接超时(ssh timeout)的方法
    Java-计划存储
    @Repository、@Service、@Controller 和 @Component
    帮助对@Repository注解的理解
    Struts 2学习笔记——拦截器相关
    JAVA UUID 生成
  • 原文地址:https://www.cnblogs.com/chenchao1990/p/5277514.html
Copyright © 2020-2023  润新知