zoukankan      html  css  js  c++  java
  • Django之路由系统

    Django之路由系统

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

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

    • URLconf中配置

      • 基本格式(django1.x版本)

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

          • 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),
            ]
            
      • 参数说明

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

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

        3. 分组匹配----》相当于给视图函数传位置参数

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

          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

  • 相关阅读:
    C#listbox使用方法
    poj 3894 System Engineer (二分图最大匹配--匈牙利算法)
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 黑白无常
  • 原文地址:https://www.cnblogs.com/yuncong/p/9944168.html
Copyright © 2011-2022 走看看