zoukankan      html  css  js  c++  java
  • django 2.0路由配置变化

    
    

    urlpatterns变量​​的语法

    urlpatterns应该是path()和/或re_path()实例的Python列表。

    1. 首先,Django会使用根路由解析模块(root URLconf)来解析路由。 通常,这是ROOT_URLCONF设置的值,但是如果传入的HttpRequest对象具有urlconf属性(由中间件设置)那么ROOT_URLCONF的设置将被其替换。
    2. Django加载该Python模块并查找变量urlpatterns。 它应该是django.urls.path()或者django.urls.re_path()实例的Python列表。

    path 是新的方法,re_path方法和原来的url用法一致,使用正则表达式
    代码:

    from django.urls import path
    
    from . import views
    
    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),
    ]
    
     

    变化:

      不在使用url函数,转而使用path转换器

    
    

      直接在url中表示捕获的参数类型,

    
    

      提取的参数会进行类型转换,不像正则表达式中都是捕获字符串

    
    

      不以斜杠结尾则匹配不到



    • 要从URL捕获某个值,使用尖角括号。
    • 捕获的值可以选择包含一个转换器类型。 例如, 使用 <int:name> 来捕获一个整形参数。 如果没有包含转换器, 那么除了/ 字符外, 会匹配任意字符串。
    • /articles/2005/03/ 的请求将与列表中的第三个条目匹配。 Django会调用函数views.month_archive(request, year=2005, month=3)
    • /articles/2003 不会匹配到任何一个模式,因为每个模式都要求URL以斜杠结尾。

    转换器类型以下路径转换器默认可用:

    • str - 匹配除了路径分隔符'/'的任意非空字符串。 如果表达式中没有包含转换器,那么这将是默认行为。
    • int - 匹配0或任意正整数。 并作为 int 返回。
    • slug - 匹配任意的黏接字符串(slug string),这些黏接字符串是ASCII的字母或数字,词与词之间由连字符或下划线黏接组成。 例如, building-your-1st-django-site
    • uuid - 匹配一个格式化的 UUID. 为了防止多个URL映射到同一页面,必须包含多个破折号(dash),同时字母必须小写。 例如, 075194d3-6885-417e-a8a8-6c931e272f00返回一个 UUID 实例。
    • path - 匹配包含路径分隔符 '/'在内的任意非空字符串。 相对于str,这允许你匹配一个完整的URL路径,而不仅仅是URL路径的一部分。
  • 相关阅读:
    金额格式化vue组件实现
    微信小程序scroll-view滚动到最底部
    腾讯云点播开发引入mui.js 导致播放控件点击事件多次触发
    nodejs中使用crypto-js先HmacSha1加密后转Base64
    vue filters中使用data中数据
    移动web开发中input等输入框问题
    d3-tip中show在自己调用时需要改变this值
    js函数式编程curry与compose实现
    mui中confirm在苹果出现bug,confirm点击确定跳转页面再返回后,页面被遮罩盖住无法使用
    mui上拉加载会影响页面中的某些点击事件
  • 原文地址:https://www.cnblogs.com/chaiming/p/9253705.html
Copyright © 2011-2022 走看看