zoukankan      html  css  js  c++  java
  • Django的请求流程(url)

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

    当访问url/hello时,Django根据ROOT_URLCONF的设置装载URF_conf,其实就是当请求来时,Django会根据settings.py里ROOT_URLCONF=‘Django_day18.urls’,找到urls.py

    然后轮询此文件里所有的urlpatterns,直到匹配到第一个与请求的url / hello /相同的url条件为止,找到的这个urlpatterns就调用相关联的view函数。

    当通过浏览器访问hello world时,Django在后台做了些什么动作?

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

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

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

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

      5.视图函数返回一个HTTPResponse.

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

        

    url在django中的使用方式:

        1.Django使用setting.py中的ROOT_URLCONF指定使用的urls.py文件(如果中间件有路由功能,urls文件功能会被其替代)。

        2.Django使用django.urls.path或者django.urls.re_path将url字符串或者正则表达式与逻辑函数关联起来。

        3.Django从上至下查找url匹配,一旦匹配成功,停止查找。

        4.一旦匹配url成功后,django传递下列参数:

          1.一个HttpRequest实例

          2.如果url中的可变参数没有命名,那么就按照位置来与视图函数中的形参一一对应

        5.如果匹配不到url,Django会发出异常。

    django.urls中的函数:

        1.path():

          1.url从上至下,在所有path函数的第一个参数的字符串中查找可以匹配的对象

          2.path第一个参数字符串开头不需要加‘/’符号

          3.url中的变量使用“<>”符号标记,可以使用冒号规定该变量的类型

          4.path第二个参数是python函数,url匹配成功后,会将request实例与url中的变量作为形参传递给该函数,并执行该函数

          5.path第三个参数为url命名,作用是可以在模版中与views视图函数中反向查询url

            

    from django.urls import include, path
    
    urlpatterns = [
        path('index/', views.index, name='main-view'),
        path('bio/<username>/', views.bio, name='bio'),
        path('articles/<slug:title>/', views.article, name='article-detail'),
        path('articles/<slug:title>/<int:section>/', views.section, name='article-section'),
        path('weblog/', include('blog.urls')),
        ...
    ]

          re.path ()  :

          与path()一样,只是第一个参数为正则表达式。

        2.include()  :

          将其他模块的url文件加载到当前url文件中来,注意正则中无结束符号‘$’,因为后面还有引入模块中的正则表达式。

            

    from django.conf.urls import include, url
     
    urlpatterns = [
        url(r'^first/', include('mysite.first.urls')),
        url(r'^second/', include('mysite.second.urls')),
    ]
    View Code
  • 相关阅读:
    css布局
    常用正则表达式
    读书笔记Hadoop实战1
    C++ IDE for Linux
    由计算机的锁是怎么实现的
    pthread
    转:C++反汇编揭秘2 – VC编译器的运行时错误检查(RTC)
    PyDev Python 开发的IDE
    转:C++反汇编揭秘1 一个简单的C++程序反汇编解析
    如何查找命令对应的软件包
  • 原文地址:https://www.cnblogs.com/jacky912/p/10429262.html
Copyright © 2011-2022 走看看