zoukankan      html  css  js  c++  java
  • Django路由之url分组(命名)匹配

    分组(命名)匹配

    urls.py路由配置文件中:

    urlspatterns中想捕获正则表达式匹配的结果用来出传递给views.py视图函数文件使用,需要用到分组匹配,或者使用第三个参数python字典进行传参。

    无名分组:(正则)

    位置参数:匹配出的结果按顺序依次传递给视图函数的形参(形参必须有序,匹配值按位置顺序进行传递)

    有名分组:(?P<name>正则)

    关键字参数:匹配出的结果按照命名对应传递给视图函数的形参(形参可以无序,匹配值按命名进行传递)

    urls.py

    from django.conf.urls import url 

    from . import views 

    urlpatterns = [

        url(r'^articles/2003/$', views.special_case_2003),

    #注意正则匹配出来的内容是字符串,即便是你在url里面写的是2003数字,匹配出来之后也是字符串

    url(r'^articles/(d{4})/$', views.year_archive),

    #year_archive(request,n),小括号为分组,有分组,那么这个分组得到的用户输入的内容,就会作为对应函数的位置参数传进去,别忘了形参要写两个了,明白了吗?

        url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),

    #某年的,(?P<year>[0-9]{4})这是命名参数(正则命名匹配还记得吗?),那么函数year_archive(request,year),形参名称必须是year这个名字。而且注意如果你这个正则后面没有写$符号,即便是输入了月份路径,也会被它拦截下拉,因为它的正则也能匹配上

        url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),#某年某月的

        url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),

    #某年某月某日的

    ]

     

     

    views.py

    views.py中视图函数的写法:

    第一个参数必须是request,后面跟的三个参数是对应着上面分组命名正则匹配的每个参数,位置可以随意

    def article_detail(request,month,day,year):

        return HttpResponse(year+month+day)

     

    正则匹配捕获参数和视图函数参数:

    视图函数的参数规则与普通函数参数规则一致,在url()映射中可以接受第三个参数python字典当做关键字参数传递给视图函数
     

  • 相关阅读:
    SQL查询版本信息语句
    一个简单的 分组 计算组内记录数占比的 语句
    MSSQL 判断表是否存在的两种方法
    兼容IEFireFoxChrome的背景音乐播放
    [C# 基础知识系列]专题二:委托的本质论
    [C# 基础知识系列]专题八: 深入理解泛型(二)
    [C# 基础知识系列]专题九: 深入理解泛型可变性
    [C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托
    [C# 基础知识系列]专题六:泛型基础篇——为什么引入泛型
    [C# 基础知识系列]专题四:事件揭秘
  • 原文地址:https://www.cnblogs.com/open-yang/p/11182916.html
Copyright © 2011-2022 走看看