目录

url路由层

  路由匹配(有名分组与无名分组)

  反向解析

  路由分发

  名称空间(了解)

  Django版本区别

url 路由匹配

注意事项:

  •   url方法,第一个参数是正则表达式,只要第一个参数能够匹配到内容,就会立刻停止向下匹配,并且直接执行对应的视图函数
  •   输入url的时候会默认加斜杠,若没有加Django会做重定向,自动添加一个斜杠再次进行匹配.
  • 关闭Django自动添加斜杠进行匹配  APPEND_SLASE = Fales / True 默认为True 自动添加斜杠.
  • 有名分组和无名分组不可以混合使用,(有名 分组可以有多个,无名分组也可以有多个,切记俩者不可以混用)

无名分组

url(r'^text/(\d+)/',views.test)

def tset(request,xx)
print(xx)
return HttpResponse('tset')

无名分组就是将括号内正则表达式匹配到的内容当作位置参数传递给后面的视图函数

有名分组

url(r'^add/(?P<a>\d+)/',views.test)

def tset(request,a)
print(a)
return HttpResponse('tset')

有名分组就是将括号内正则表达式匹配到的内容当作关键字参数传递给后面的视图函数

反向解析:

  通过一些方法得到一个结果,该结果可以直接访问对应的url触发视图函数

#先给路由与视图函数起一个别名
url(r'*func_kk/',views.func,name='xxx') 前端解析
< a href = "{% ooo %}">111</a> 后端解析
form django.shortcuts import render,HttpResponse,redirect,reverse
reverse("ooo")

 无名分组的反向解析

# 无名分组对的反向解析

url (r'^index/(\d+)/',views.inde,name='ooo')

前端解释
{% url "ooo" 123 %} 后端解析
reverse( 'ooo' ,args=(1,) ) 这个数字在写代码的时候应该放什么
数字一般情况下放的是数据的主键值 数据的编辑和删除 url(r'^edit/(\d+)/',views.edit,name="ooo") def edit(request,edit_id):
reverse('ooo' ,args=(edit_id,)) {% for user_obj in user_queryset %}
<a href= {% url 'ooo' user_obj.id %} >编辑</a>
{% endfor%}

 有名分组的反向解析

# 有名分组的反向解析
url(r'^index/(?P<year>\d+)/',views.index,name='ooo') 前端解析
<a href ='{% url 'ooo' year=123 %}'>111</a> #(了解)
< a href = '{% url "ooo" 123%}'>123</a> #记忆 后端解析
print(reverse("ooo" , kwargs={'yesr':123})) #(了解)
print( reverse('ooo',args=(111,)))

路由分发

Django1.1版本的路由分发

主路由

#主路由

from django.conf.urls import url,include

from app01 import urls as app01_urls
from app02 import urls as app02_urls urlpatterns = [
url(r'admin/',admin.site.urls),
#方式1
url(r'app01/',include(app01-urls)),
url(r'app02/',include(app02-urls)), #方式2(推荐使用)
url(r'app01/',include('app01.urls')),
url(r'app02/',include('app02.urls')),
]

子路由

#子路由
from django.conf.urls import url
from app01 import views urlpatterns = [
url(r'add/',views.add),
]

Django2.2版本的路由分发

(对多个APP中的重名视图函数根据不同的APP进行分发,互不干扰)

主路由

from django.contrib import admin
from django.urls import path,include urlpatterns = [
path('admin/', admin.site.urls),
path('app01/', include("app01.urls")),
path('app02/', include('app02.urls'))
]

#主路由的的re_path中不可以加$符

子路由

from django.urls import path

from app01 import views

urlpatterns = [
path('func/', views.func)
]

名称空间(了解)

(多个应用出现相同的别名时,研究反向解析会不会自动识别应用前缀)

正常情况下的反向解析是没有办法自动识别前缀

主路由

#主路由
from django.conf.urls import url,include urlpatterns = [
url(r'admin/',admin.site.urls), url(r'app01/',include('app01.urls',namespace='app01')),
url(r'app02/',include('app02.urls',namespace='app02')),
]

子路由

#子路由
from django.conf.urls import url
from app01 import views
#app01
urlpatterns = [
url(r'add/',views.add,name='add'),
]
#app02
urlpatterns = [
url(r'add/',views.add,name='add'),
]

视图函数中的反向解析

reverse('app01:add')

reverse('app01:add')

前端中的反向解析

{% url "app01:add" %}

{% url "app02:add" %}

django之间的版本区别

1.x与2.x

区别一

django 1.x中路由层使用的是url方法
url()中的第一个参数支持正则
from django.conf.urls import url urlpatterns = [
url(r'admin/', admin.site.urls),
url(r'^add/',viwes.add)
] django 2.x和3.x 中使用的是path方法
path()中的第一个参数不支持正则,写什么匹配什么
from django,urls import path,re_path  #导入模块,支持正则 urlpatterns = [
path('admin/',admin.site.urls),
path('add/',viwes.add)
  re_path(r'^add/',views.add)   #支持正则
]

区别二

path 内部默认支持五种转换器  (支持自定义转换器)

str  int  slug  uuid  path

path('index/<int:id>/',index)

视图函数

def index(request,id):
print(id,type(id))
return HttpResponse('index')

Django( 学习第三部 Django的url路由层)的更多相关文章

  1. Django学习笔记之Django中间件

    准备 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...

  2. Django学习之七:Django 中间件

    目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 中间件加载源码阅读 总结 Django 中间件 Tips: 更新日志: 2019.01.31 更新django中 ...

  3. Django框架之第三篇(路由层)--有名/无名分组、反向解析、路由分发、名称空间、伪静态

    一.Django请求生命周期 二.路由层  urls.py url()方法 第一个参数其实就是一个正则表达式,一旦前面的正则匹配到了内容,就不会再往下继续匹配,而是直接执行对应的视图函数. djang ...

  4. Django学习之四:Django Model模块

    目录 Django Model 模型 MODEL需要在脑子里记住的基础概念 区分清楚,必须不能混淆的 class Meta 内嵌元数据定义类 简单model创建实例 数据源配置 接着通过models在 ...

  5. Django 学习第一天——django 基本介绍和环境搭建

    web 应用设计模式(MTV MVC): MTV: M:models 模型:负责业务数据对象与数据库对象: T:templates 模板:负责如何把数据展示给用户: V:views 视图:负责业务逻辑 ...

  6. Django学习之六:Django 常用模块导入记忆

    Django 常用模块导入记忆 django相关 1. urls相关操作 from django.urls import path, re_path, include from django.urls ...

  7. Django学习笔记之Django Form表单

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  8. python之Django学习笔记(三)---URL调度/URL路由

    在django中,用户发起url请求消息首先到工程的urls.py中查找是否有匹配的url路径 刚创建好的工程中urls.py只有下面几行代码: from django.contrib import ...

  9. Django学习笔记之Django的url反向解析

    0x00 URL反向解析和三种不同的反向解析方式 Django中提供了关于URL的映射的解决方案,可以做两个方向的使用: 1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解 ...

随机推荐

  1. selenium初探

    先看看官方给的小demo from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = ...

  2. 关于浏览器访问iLO报错ERR_SSL_BAD_RECORD_MAC_ALERT

    公司有几台HP DL380 G7服务器,ilo版本是ilo3(Integrated Lights-Out 3),ilo口配置好后,无法正常打开ilo页面 ping ilo口是通的,并且telnet 8 ...

  3. 面试可能遇到的关联式容器(map、set等)相关问题

    >>>. map与set的区别是什么,各有哪些优势?   map中存储的数据是以键值对(key - value)形式并且通过排序(比较key,默认以 '<' 方式排序)存在的( ...

  4. 普利姆算法(prim)

    普利姆算法(prim)求最小生成树(MST)过程详解 (原网址) 1 2 3 4 5 6 7 分步阅读 生活中最小生成树的应用十分广泛,比如:要连通n个城市需要n-1条边线路,那么怎么样建设才能使工程 ...

  5. JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

  6. P3431 [POI2005]AUT-The Bus

    Link 简化题意: 给你一张网格图,每个点有其对应的权值,让你找出来一条横纵坐标都单调不降的路径,并最大化经过点的权值. 分析: 这是经典的二维数点或者二维偏序问题. 如果两维一直在变的话,我们不是 ...

  7. RHSA-2017:1842-重要: 内核 安全和BUG修复更新(需要重启、存在EXP、本地提权、代码执行)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  8. Java源码详解系列(十一)--Spring的使用和源码

    Spring 是一个一站式的 Java 框架,致力于提高我们项目开发的效率.通过 Spring,我们可以避免编写大量额外代码,更专注于我们的核心逻辑.目前,Spring 已经成为最受欢迎的 Java ...

  9. 安装两个Eclipse 版本不一致,高版本无法打开

    Could not create the JavaVirtual Machine,A fatal exception has occurred. 首先删除了 工作空间的配置 然后删除掉C:\Windo ...

  10. 多测师讲解a'pi自动化框架设计思想_高级讲师肖sir

    API自动化框架API自动化框架分为conf.data.utils.api.testcase.runner.report.log8个模块.conf是用来储存系统环境.数据库.邮件等的配置参数.项目的绝 ...