• 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路径的一部分。
  • 相关阅读:
    C++程序设计第二周作业
    navicat 连接windows服务器中的mysql数据库
    Python 多进程(二度回顾)
    MySQl 合并结构相同的多张表
    Python 验证码识别-- tesserocr
    Navicat Premium 修改MySQL密码(忘记密码的情况下)
    Navicat Premium 出现2059错误解决办法
    MySQL 1053错误 服务无法正常启动的解决方法
    mysql触发器trigger 实例详解
    navicat for mysql 连接报错1251详细解决步骤
  • 原文地址:https://www.cnblogs.com/chaiming/p/9253705.html
Copyright © 2020-2023  润新知