路由层之路由匹配

"""路由你可以看成就是出去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. SpringBean的生命周期 以及一些问题总结

    SpringBean的生命周期 一.传统 Bean 的生命周期 new实例化: 可使用了 无引用时,GC回收. 二.Servlet 的生命周期 实例化Servlet对象: init初始化对象: 相应客 ...

  2. Ribbon负载均衡能干什么?

    (1)将用户的请求平摊的分配到多个服务上 (2)集中式LB即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至 ...

  3. jQuery--表单的过滤

    1.表单过滤器的介绍 :input 所有表单元素(<input>/<select>/<textarea>/<button>) :text 文本框< ...

  4. java-spring

    Spring-IOC ioc概念 控制反转 把对象创建和对象之间的调用过程,交给Spring 进行管理. 目的就是,为了降低耦合度,因为当你想在一个类当中调用另外一个类的方法,你需要获得另外一个类的实 ...

  5. Python form...import...和import的区别(自己理解的)

    Python有两种导入包和模块的方式,区别如下 form...import... import 相对导包 导入不同包子模块 可以导入模块所需变量/函数/类   init文件的__all__特殊变量(模 ...

  6. 详解 IOC

    什么是IOC: IOC-Inversion Of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是 ...

  7. IIS在ASP.NET Core下的两种部署模式

    KestrelServer最大的优势体现在它的跨平台的能力,如果ASP.NET CORE应用只需要部署在Windows环境下,IIS也是不错的选择.ASP.NET CORE应用针对IIS具有两种部署模 ...

  8. CollectionUtils工具类之并集union(arr1,arr2)和差集subtract(arr1,arr2)

    一.CollectionUtils工具类之并集union(arr1,arr2)和差集subtract(arr1,arr2) 采用的类: import org.apache.commons.collec ...

  9. 集合流之“将List<Integer>转为String并用逗号分割”

    1.使用[流+Collectors]转换 import java.util.ArrayList; import java.util.List; import java.util.stream.Coll ...

  10. Numpy使用Matplotlib实现可视化绘图

    Numpy使用Matplotlib实现可视化绘图 可以直接将Numpy的数组传给Matplotlib实现可视化绘图: 曲线图 饼图 柱状图 直方图 1. 绘制正弦曲线 2. 绘制饼图 3. 柱状图 4 ...