• Django路由系统-URLconf配置、正则表达式简述


    Django路由系统

    1.11版本官方文档

    ​ URL配置就像是Django项目的目录,它的本质是URL与URL调用的函数之间的映射表,Django会根据URL配置,在遇到一个URL时,就去执行相应的函数。

    URLconf配置

    基本格式

    from django.conf.urls import url
    
    urlpatterns = [
         url(正则表达式, views视图,参数,别名),
    ]
    

    【示例】

    from django.conf.urls import url
    from . import views
    
    urlpatterns = [
        url(r'^articles/2003/$', views.special_case_2003),
        url(r'^articles/([0-9]{4})/$', views.year_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
    ]
    

    参数说明

    1. 正则表达式:对应一个字符串形式正则表达式
    2. views视图:一个可调用的函数,通常是一个视图函数
    3. 参数:可选项,字典形式,要传递给视图函数的默认参数
    4. 别名:可选项,name参数

    2.0版本中的路由系统的写法

    from django.urls import path,re_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),
    ]
    
    2.0版本中的re_path和1.11版本的url用法相同
    

    正则表达式概述

    基本配置

    urlpatterns = [
        url(r'^articles/2003/$', views.special_case_2003),
        url(r'^articles/([0-9]{4})/$', views.year_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
    ]
    

    注意事项

    1. urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续;
    2. 若要从URL中捕获一个值,只需要用()将值包括起来即可(分组匹配);
    3. 不需要添加一个前导的反斜杠,因为每一个URL都有一个,比如:应该是^articles 而不是 ^/articles;
    4. 每个正则表达式前面的r都是可选项,但是建议加上。

    补充说明

    ​ Django settings.py配置文件中默认没有 APPEND_SLASH 这个参数,但 Django 默认这个参数为 APPEND_SLASH = True。 其作用就是自动在网址结尾加'/',在浏览器访问的地址后面不为/时,会自动跳转至带有/的路径的配置项。

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^jjzz/$', views.Index.as_view()),
        url(r'^fileupload/$', views.Upload.as_view()),
    ]
    

    ​ 如上段代码所示,当我们访问访问 http://www.example.com/jjzz 时,默认情况下,Django会自动在网址后补加一个/,转换成http://www.example.com/jjzz/,如下图

    ​ 如果是在settings中设置了APPEND_SLASH=False,再请求 http://www.example.com/jjzz 就会提示找不到页面。(所用格url为笔者举例使用!)

  • 相关阅读:
    Docker安装MySQL&Redis
    使用VirtualBox+Vagrant快速搭建Linux虚拟机环境
    Java集合工具类的一些坑,Arrays.asList()、Collection.toArray()...
    1.docker常用命令
    4. 带有延迟时间的Queue(DelayQueue)
    3. 基于优先级的Queue(PriorityBlockingQueue)
    2. 常见的Queue
    1. 模拟Queue
    14. 线程调度
    13. 线程池
  • 原文地址:https://www.cnblogs.com/jjzz1234/p/11619839.html
Copyright © 2020-2023  润新知