路由层之路由匹配

"""路由你可以看成就是出去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. 可以直接调用 Thread 类的 run ()方法么?

    当然可以.但是如果我们调用了 Thread 的 run()方法,它的行为就会和普通的方 法一样,会在当前线程中执行.为了在新的线程中执行我们的代码,必须使用 Thread.start()方法.

  2. java-注解相关

    注解 概念:说明程序的,给计算机看  注释:用文字描述程序 先了解一些怎么正常javadoc文档 1:给类或者方法添加doc注释 2:通过命令javadoc 执行 类.java文件 新建的类: /** ...

  3. web workers是什么,为什么我们需要web workers?

    请看下面的for循环代码,它将运行超过百万次. function SomeHeavyFunction() { for (i = 0; i < 10000000000000; i++) { x = ...

  4. springboot项目如何添加热部署

    环境jdk1.8.maven3.6.使用工具为idea 1.在pom.xml文件中添加依赖 <dependency> <groupId>org.springframework. ...

  5. css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”

    一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...

  6. 11_二阶系统的单位阶跃响应_详细数学推导部分_2nd order system unit step response

  7. USB3.0接口EMC设计标准电路

  8. TypeScript中变量调用时后缀感叹号和问号的区别

    typescript编译时,当我们开启严格模式时,下面的代码就会报错: function doSomething(x: string | null) { console.log("Hello ...

  9. javaweb之模糊查询

    模糊查询,主要通过sql语句来进行查询 一.dao层 加入模糊查询的方法 package dao; import java.sql.Connection; import java.sql.Prepar ...

  10. 【uniapp 开发】字符串工具类 StringUtil

    替换字符串中的所有 "***" 子串 var str='Is this all there is'; var subStr=new RegExp('is','ig');//创建正则 ...