路由层之路由匹配

"""路由你可以看成就是出去ip和port之后的地址"""
url()方法
1.第一个参数其实是一个正则表达式
2.一旦第一个参数匹配到了内容直接结束匹配 执行对应的视图函数
url(r'^test/$',views.test),

无名分组

url(r'^test/\d+/$',views.test),
# 正则表达式分组:给正则表达式前后加一个小括号
url(r'^test/(\d+)/$',views.test),
"""
无名分组
将括号内正则表达式匹配到的内容当做位置参数传递给后面的视图函数
"""

有名分组

正则表达式可以起别名

 url(r'^testadd/(?P<id>\d+)/$',views.testadd),
"""
有名分组
将括号内正则表达式匹配到的内容当做关键字参数传递给后面的视图函数
"""

是否可以结合使用

url(r'^test1/(\d+)/(?P<id>\d+)/$',views.test1),
1.无名有名分组不能混合使用 url(r'^test2/(\d+)/(\d+)/$',views.test2),
url(r'^test3/(?P<id>\d+)/(?P<id1>\d+)/$',views.test3),
2.可以单个重复使用

反向解析

当路由频繁变化的时候,HTML界面上的链接地址如何做到动态解析
# 1.给路由与视图函数对应关系添加一个别名(名字自己指定 只有不冲突即可)
url(r'^index/', views.index,name='index_name'),
# 2.根据该别名动态解析出一个结果,该结果可以直接访问到对应的路由
前端
<a href="{% url 'index_name' %}">111</a>
后端
from django.shortcuts import reverse
reverse('index_name')
ps:redirect括号内也可以直接写别名

无名有名反向解析

url(r'^index/(\d+)/', views.index,name='index_name'),
后端
reverse('index_name',args=(1,)) # args一般放数据的主键值 只要给个数字即可
前端
<a href="{% url 'index_name' 1 %}">111</a> # 只要给个数字即可 url(r'^index/(?P<id>\d+)/', views.index,name='index_name'),
后端
reverse('index_name',kwargs={'id':123}) # 只要给个数字即可
前端
<a href="{% url 'index_name' id=666 %}">4444</a> # 只要给个数字即可 总结
无名有名都可以使用一种(无名)反向解析的形式

内容回顾

  • 数据库同步命令

    inspectdb
  • Django请求生命周期流程图

    1.web服务网关接口

    wsgiref

    uwsgi

    2.灰色地带(Django中间件)

    3.路由层

    4.视图层

    5.模板层

    6.模型层
  • 路由匹配

    1.自动补全斜杠

    APPEND_SLASH = True

    2.url()方法

    第一个参数是正则表达式

    # 路由匹配特性:一旦正则能够匹配到内容则停止继续往下而是直接执行对应的功能
  • 无名有名分组

    无名分组

    给正则表达式加上一个括号

    url(r'index/(\d+)/',views.index)

    执行视图函数的时候会将括号内匹配到的内容当做位置参数传递给视图函数

    有名分组

    给正则表达式加上一个括号并且起一个别名

    url(r'index/(?P\d+)/',views.index)

    执行视图函数的时候会将括号内匹配的内容当做关键字参数传递给视图函数

    ps:两者不能混合使用,但是单独可以重复使用
  • 反向解析

    """通过别名得到一个可以访问该别名对应的路由规则"""

    1.起别名(不能冲突)

    url(r'index/',views.index,name='index_name')

    2.反向解析

    前端

    {% url 'index_name' %}

    后端

    from django.shortcuts import reverse

    url = reverse('index_name')
  • 无名有名反向解析

    """当路由出现无名有名分组反向解析需要传递额外的参数"""

    url(r'index/(\d+)/',views.index,name='index_name')

    前端

    {% url 'index_name' 1 %}

    后端

    from django.shortcuts import reverse

    url = reverse('index_name',args=(1,))

    ps:有名分组的反向解析也可以使用无名的方式

    # 了解

    url(r'index/(?P\d+)/',views.index,name='index_name')

    前端

    {% url 'index_name' 1 %}

    后端

    from django.shortcuts import reverse

    url = reverse('index_name',kwargs={'id':1})

Django学习——路由层之路由匹配、无名分组、有名分组、反向解析的更多相关文章

  1. python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

    12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ...

  2. Django学习手册 - 正则URL路由配置/路由分发

    ############################################### 总结: 一.url路由配置: 方式一:(通过url链接get获取) 方式二:(url路由匹配方式获取-拓 ...

  3. Django 学习第二天——URL路由及模板渲染方式

    URL 的概念及格式: URL的引入:客户端:知道了url 就可以去进行访问: 服务端:设置好了url,别人才能访问到我 URL :网址(全球统一资源定位符):由 协议,域名(ip port) ,路径 ...

  4. django学习(二)

    1.反向解析 什么是方向解析呢? 通过一些方法得到一个结果,该结果可以直接访问对应url出发视图函数. 先给一个路由和视图函数起一个别名.但是我们要注意的是反向解析的别名是不可以冲突的!!!不然会出现 ...

  5. [Django框架之路由层匹配、有名 无名分组、反向解析、路由分发、名称空间、伪静态、本地虚拟环境、django版本区别]

    [Django框架之路由层匹配.有名 无名分组.反向解析.路由分发.名称空间.伪静态.本地虚拟环境.django版本区别] 路由层 路由即请求地址与视图函数的映射关系,如果把网站比喻成一本书,那路由就 ...

  6. Django 学习 之路由层(URL)

    路由层(URL) 1.路由层简单配置 (1)path方法 写固定的url. (2)re_path方法 可以正则规则 例: urlpatterns = [ path('admin/', admin.si ...

  7. Django( 学习第三部 Django的url路由层)

    目录 url路由层 路由匹配(有名分组与无名分组) 反向解析 路由分发 名称空间(了解) Django版本区别 url 路由匹配 注意事项: url方法,第一个参数是正则表达式,只要第一个参数能够匹配 ...

  8. django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间

    目录 django请求生命周期流程图 1.Django请求的生命周期的含义 2.Django请求的生命周期图解及流程 3.Django的请求生命周期(分布解析) 路由层 1.路由匹配 2.path转换 ...

  9. Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)

    摘要: 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页.虚拟环境 视图层 JsonResponse FBV 与 CBV(function base views与class bas ...

随机推荐

  1. 高度不定,宽100%,内一div高不确定,如何实现垂直居中?

    verticle-align: middle; 绝对定位50%加translateY(-50%) 绝对定位,上下左右全0,margin:auto

  2. XSS攻击和CSRF攻击

    一.什么是XSS攻击 XSS(Cross Site Scripting),即跨站脚本攻击,是一种常见于web应用程序中的计算机安全漏洞.XSS通过在用户端注入恶意的可运行脚本,若服务器端对用户输入不进 ...

  3. java-設計模式概述

    什麽是設計模式?? 软件设计中常见问题的典型解决方案. 能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题. 模式并不是一段特定的代码, 而是解决特定问题的一般性概念. 你可以根据模式 ...

  4. 有哪些类型的通知(Advice)?

    Before - 这些类型的 Advice 在 joinpoint 方法之前执行,并使用 @Before 注解标记进行配置. After Returning - 这些类型的 Advice 在连接点方法 ...

  5. Python学习—(windows系统下)安装pygame

    浏览器搜索pygame的windows安装程序,下载与python版本相匹配的文件. 如果.exe文件直接运行: 如果.whl文件,将其复制到要用到的项目文件夹中,在cmd窗口中切换到该文件所在的文件 ...

  6. c语言实现两数交换的三种方法

    实现变量的值互相交换的三种不同方法 方法一:利用第三个变量来实现数值的交换 int tmp; tmp = a; a = b; b = tmp; 此方法直观,简易.不易出错,推荐使用 方法二:利用两个变 ...

  7. 如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用

    疫情期间,很多线下活动转为线上举行,实时音视频的需求剧增,在视频会议,在线教育,电商购物等众多场景成了"生活新常态". 本文将教你如何通过即构ZEGO sdk在Android端搭建 ...

  8. 如何更愉快地使用rem —— 别说你懂CSS相对单位

    前段时间试译了Keith J.Grant的CSS好书<CSS in Depth>,其中的第二章<Working with relative units>,书中对relative ...

  9. H5打造属于自己的视频播放器(JS篇2)

    回顾 算了不回顾了 直接搞起,打开JS1中写的bvd.js 播放视频 播放按钮隐藏 视频开始播放 当点击播放按钮的时候,播放按钮将会隐藏,播放视频,这个不难,在JS1中我们就已经实现.但我们改变一下思 ...

  10. 王下邀月熊_Chevalier的前端每周清单系列文章索引

    感谢 王下邀月熊_Chevalier 分享的前端每周清单,为方便大家阅读,特整理一份索引. 王下邀月熊大大也于 2018 年 3 月 31 日整理了自己的前端每周清单系列,并以年/月为单位进行分类,具 ...