Django之路由系统

Django之路由系统

  • nazha对应内容 http://www.cnblogs.com/liwenzhou/p/8271147.htmlhtml

  • 前言: URL配置(URLconf)就像Django所支撑网站的目录,它的本质是URL与要为该URL调用的视图函数之间的映射表前端

  • URLconf中配置python

    • 基本格式(django1.x版本)正则表达式

      • from django.conf.urls import url
        
        urlpatterns = [
             url(正则表达式, views视图函数,参数,别名),
        ]
      • Django2.0版本格式django

        • from django.urls import path
          
          urlpatterns = [
              path('articles/2003/', views.special_case_2003),
              path('articles/<int:year>/', views.year_archive),
              path('articles/<int:year>/<int:month>/', views.month_archive),
              path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
          ]
    • 参数说明app

      1. Django路由系统匹配URL路径的时候是从上到小按照注册顺序来的函数

      2. django的路由系统只匹配URL路径,不匹配域名,端口和URL参数网站

      3. 分组匹配----》至关于给视图函数传位置参数url

      4. 分组命名匹配 ----》至关于给视图函数传关键字参数spa

        1. (?P<name>pattern) 其中name为组的名称,pattern为匹配的模式
        • 注意:分组匹配和分组命名匹配不能混合使用
    • 实例:为获取某出版社某年某月出版的书的数量,

      • # urls.py中
        from app01 import views
        urlpatterns = [
            # url(r"^book_amount/([0-9]{4})/([0-9]{2})/$", views.book_list),      # 分组匹配
            url(r"^book_amount/(?P<year>[0-9]{4})/{?P<month>[0-9]{2}/$", views.book_list)     # 分组命名匹配
        ]
      • # views.py中
        def book_list(request,year,month):
          print(year,month)    #对于匹配的值能够打印,类型为字符串类型
      • 对于使用分组命名匹配,在views.py中可使用默认参数

      • def page(request, num="1"):
            pass
    • 给URL匹配模式器名字

      • name = "别名" ---》 起别名的目的是为了反向解析URL的时候有依据
        • 起别名的做用是:动态匹配跳转的页面,直接经过名字name能够找到,
      • 5mJArq.png
    • 经过名字反向解析

      • 在视图函数中

        • from django.urls import reverse
          reverse("别名")
          reverse("名称空间:别名", kwargs={"k1":v1})
          5mJNhR.png
      • 模板语言中

        • 在前端a标签中,能够经过下列代码进行跳转页面

        • {% url "别名" "参数" %}
        • 5mJf1y.png

    • namespace模式

      • 当项目很大,页面不少的时候,项目下urls.py中就会出现混乱,复杂,因此要用namespace模式,来进行分块匹配

      • from django.conf.urls import url, include
        from teacherapp import urls as teacherurls
        urlpatterns = [
            url(r"^teacher/", include(teacherurls, namespace="teacher")),   # 二级目录
        ]
      • 5mZ3BK.png

相关文章
相关标签/搜索