• 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

  • 相关阅读:
    DM8168 新三板系统启动
    AndroidAndroid程序提示和消息button响应事件
    Linux核心regulator建筑和准备
    对话(VC_Win32)
    VOJ 1067 Warcraft III 守望者的烦恼 (矩阵高速功率+dp)
    有所述网络流的上限和下限
    Matlab Newton‘s method
    Cocos2d-Java安装和配置跨平台游戏引擎以及相关的开发工具
    n每个计数的概率和发生骰子--动态规划
    自己写CPU第九阶段(3)——加载存储指令说明2(swl、swr)
  • 原文地址:https://www.cnblogs.com/yuncong/p/9944168.html
Copyright © 2020-2023  润新知