路由层

路由匹配:APPEND_SLASH = False , 取消自动补全 , settings.py 中添加字段即可

若url尾部为书写/ , django内部会自动补全

urls.py 中 对应关系正确书写方式

url(r'^admin/$', admin.site.urls)

首页重定向

urls(r'^$',views.start)

无名分组

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

分组:将某一段正则表达式用小括号括起来

举例:

url(r'^index/(\d+)/',views.index)
def index(request,xxx):print(xxx) # 输出:111return  HttpResponse('想')

有名分组

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

url(r'^indexadd/(?P<year>\d)',views.indexadd)
def indexadd(request,year):print(year)return HttpResponse('么么')

无名有名是否可以混合使用?不能,但是同一个分组可以使用N次。

无名分组

url(r'^index/(\d+)/(\d+)/(\d+)/', views.index)
def index(request,*args,**kwargs):print(args) # 输出:('111', '222', '333') <class 'tuple'>print(kwargs) # 输出:{}return  HttpResponse('想')

有名分组

url(r'^index/(?P<name>)/(?P<age>)/(?P<hobby>)/',views.indexadd)
def indexadd(request,*args,**kwargs):print(args, type(args)) # () <class 'tuple'>print(kwargs,type(kwargs)) # {'name': '1', 'age': '2', 'hobby': '3'} <class 'dict'>return HttpResponse('么么')

反向解析,导入摸快reverse

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

对应关系,urls.py

url(r'^$',views.home),url(r'^func_lkkk/',views.func,name='ooo')

视图函数层,views.py

获得

from django.shortcuts import render,HttpResponse,reversedef home(request):print(reverse('ooo')) # /func_lkkk/ , <class 'str'>return render(request,'func.html')def func(request):return HttpResponse('aaa')

templates,静态文件

<a href="{% url 'ooo' %}">func</a>

那么这个数字写代码的时候应该放什么?

数字一般情况下放的是数据的主键值,数据的编辑和删除。

无名分组反向解析

url(r'^func_lkkk/(\d+)/',views.func,name='ooo')
def home(request):print(request)return render(request,'func.html')def func(request,*args,**kwargs):a = reverse('ooo',args=(1,))print(a) # /func_lkkk/1/,字符串return HttpResponse('aaa')<body>
<a href="{% url 'ooo' 11 %}">func</a>
</body>

有名分组反向解析

url(r'^func_lkkk/(?P<year>\d+)/',views.func,name='ooo')前端:两种<a href="{% url 'ooo' 11 %}">func</a><a href="{% url 'ooo' year=11 %}">func</a>后端:两种print(reverse('ooo',kwargs={'year':11}))print(reverse('ooo',args=(11,)))
url(r'^func_lkkk/(?P<year>\d+)/',views.func,name='ooo')def home(request):print(request)return render(request,'func.html')def func(request,*args,**kwargs):print(reverse('ooo',kwargs={'year':11}))print(reverse('ooo',args=(11,)))return HttpResponse('ss')

路由分发

Django 的每一个应用都可以有自己的templates文件夹, urls.py 文件夹,static文件夹

正式基于上述的特点,Django能够非常好的做到分组开发(每个人只写自己的app),作为组长,只需要将手下书写的app全部拷贝到一个新的Django项目中,再再配置文件中注册所有的app再利用路由分发的特点所有的app整合即可。

当Django项目中的url特别多的时候,总路由urls.py代码非常冗余不好维护,这是也可以利用路由分发来减轻总路由的塔里。

利用路由分发之后,总路由不再与视图函数具有直接的对应关系,而是分发处理,识别当前url是属于那个应用下,直接分发对应的应用做处理。

项目中若无 urls.py 文件夹则手动创建

# app01/urls
urlpatterns = [url(r'^sex/',views.sex)
]
def sex(request):return HttpResponse('app01 sex')# app02/urls
urlpatterns = [url(r'^sex/',views.sex)
]
def sex(request):return HttpResponse('app02 sex')# 总路由
from django.conf.urls import url,include
# 第一种:
urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^app01/',include('app01.urls')),url(r'^app02/',include('app02.urls'))
]# 第二种:url(r'^app01/', include(app01_urls)),  # 只要url前缀是app01开头 全部交给app01处理url(r'^app02/', include(app02_urls))

名称空间

当多个应用出现相同别名,反向解析不会自动识别应用前缀

# 名称空间# 总路由url(r'^app01/',include('app01.urls',namespace='app01')),url(r'^app02/',include('app02.urls',namespace='app02'))
# 解析的时候# app01urlpatterns = [url(r'^reg/',views.reg,name='reg')]# app02urlpatterns = [url(r'^reg/',views.reg,name='reg')]reverse('app01:reg')reverse('app02:reg'){% url 'app01:reg' %}{% url 'app02:reg' %}

其实只要保证名字不冲突 就没有必要使用名称空间。一般情况下,有多个app的时候我们在起别名的时候会加上app的前缀,这样的话就能够确保多个app之间名字不冲突的问题。

urlpatterns = [url(r'^reg/',views.reg,name='app01_reg')
]
urlpatterns = [url(r'^reg/',views.reg,name='app02_reg')
]

伪静态

"""
静态网页数据是写死的 万年不变伪静态将一个动态网页伪装成静态网页为什么要伪装呢?https://www.cnblogs.com/Dominic-Ji/p/9234099.html伪装的目的在于增大本网站的seo查询力度并且增加搜索引擎收藏本网上的概率搜索引擎本质上就是一个巨大的爬虫程序总结:无论你怎么优化 怎么处理始终还是干不过RMB玩家
"""
urlpatterns = [url(r'^reg.html',views.reg,name='app02_reg')
]

虚拟环境

django版本区别

django1.X路由层使用的是url方法,而在django2.Xhe3.X版本中路由层使用的是path方法

url()第一个参数支持正则path()第一个参数是不支持正则的 写什么就匹配什么如果你习惯使用path那么也给你提供了另外一个方法from django.urls import path, re_pathfrom django.conf.urls import urlre_path(r'^index/',index),url(r'^login/',login)2.X和3.X里面的re_path就等价于1.X里面的url

虽然path不支持正则 但是它的内部支持五种转换器, 路由层

path('index/<int:id>/',index)# 将第二个路由里面的内容先转成整型然后以关键字的形式传递给后面的视图函数def index(request,id):print(id,type(id)) # 输入数字,输出  数字 int 类型return HttpResponse('index')"""str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式int,匹配正整数,包含0。slug,匹配字母、数字以及横杠、下划线组成的字符串。uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)"""

除了有默认的五个转换器之外 还支持自定义转换器(了解)

https://www.cnblogs.com/xiaoyuanqujing/articles/11642628.html

博客最底部

模型层里面1.X外键默认都是级联更新删除的,但是到了2.X和3.X中需要你自己手动配置参数

models.ForeignKey(to='Publish')models.ForeignKey(to='Publish',on_delete=models.CASCADE...)

至此路由层结束

djang urls.py 无名有名分组,反向解析,路由分发,名称空间,伪静态,虚拟环境,django版本...相关推荐

  1. django ajax 更新表格_Django(反向解析,路由分发、名称空间、视图层、虚拟环境、Django版本、json,CBV)...

    https://www.zhihu.com/video/1249117508688711680 每日测验 """ 今日考题 1.列举你知道的orm数据的增删改查方法 2. ...

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

    阅读目录 一.路由层:(Django的路由系统) 二.伪静态网页和虚拟环境: 三.FBV与CBV.JsonResponse.文件上传 一.路由层:(Django的路由系统) URL配置(Django项 ...

  3. Django05-1: 有名分组、无名分组与反向解析

    有名.无名分组 分组正则表达式,加小括号 url(r'^test/(\d+)', views.test),def test(request,xx):print(xx)return HttpRespon ...

  4. Django 的反向解析与有无名分组

    无名分组(将加括号的正则表达式匹配到的内容当做位置参数自动传递给对应的视图函数)url(r'^test/(\d+)/',views.test), # 匹配一个或多个数字def test(request ...

  5. python动态映射_Python Django框架url反向解析实现动态生成对应的url链接示例

    本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接.分享给大家供大家参考,具体如下: url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码). ...

  6. django之路由分组,路由分发,FBV,CBV,ORM框架

    今日的内容: a. 路由系统1. 创建app2. 路由的分组3. 路由的分发- 正则表达式匹配b. django的orm(模型model)1. 创建模型的步骤2. orm基本的增删改查3. 正向查询和 ...

  7. java xpath 命名空间_java-关于使用Saxon使用默认名称空间对xml进行xpath解析

    我想要一些有关使用saxon解析默认名称空间的xpath的信息.我正在使用Saxon-HE-9.5.1-3.jar在代码中使用xpath 2功能.在类路径中包含saxon库之后,我面临着解析具有默认名 ...

  8. 分组,命名分组,url的命名和反向解析

    1.位置分组 匹配到参数,按照位置参数的方式传递给视图函数 视图函数需要定义形参接收变量 1.写在url里面的: # 删除url(r'^del_class/(\d+)',views.del_class ...

  9. 路由系统(urls.py)

    路由系统(urls.py) 正则表达式匹配 urls.py from django.conf.urls import url from . import views urlpatterns = [ur ...

最新文章

  1. 【快速上手mac必备】常用优质mac软件推荐(音视频、办公、软件开发、辅助工具、系统管理、云存储)
  2. SQL操作的组成部分-数据控制
  3. pads最新版本是多少_电路EDA软件究竟有多少?
  4. inputstream的大小为0_李太阳2020302期排列三推荐:本期两码看好0、3
  5. boost::type_traits模块用法的一些示例
  6. oracle 树状结构一直出现不了_深入解析Oracle ASSM 段头块(PAGETABLE SEGMENT HEADER)结构...
  7. Kafka坑 - Couldn't find leaders for Set(kafka重启)
  8. cookie购物车php简单,cookie的优化与购物车实例
  9. Java讲课笔记08:数组
  10. java基础 - 综合训练
  11. 麻省计算机音乐博士,MIT又一突破!用AI过滤音源,让音乐更悦耳
  12. linux进入root编译gcc,非Root用户编译安装GCC
  13. 基于FPGA的以太网控制器(MAC)设计(上)
  14. 基于UML的绩效考核管理系统
  15. 贪吃蛇 (自我修改添加)
  16. 数模转换器的构成和特点
  17. 服务器主板不装系统进不去BIOS,bios进不去怎么装系统
  18. 在电脑上安装Linux系统步骤
  19. 雅虎将收购什么类型公司?梅耶尔:移动!移动!移动!
  20. 计算机硬件检测点亮法,不看准抓瞎 电脑点不亮该如何逐一排查

热门文章

  1. oracle undo与redo的区别
  2. 9个最有趣的代码注释
  3. 排队时延(Queuing delay)
  4. git@gitlab.com: Permission denied报错
  5. ZR859 坤坤的篮球场 (单调队列)
  6. 一套效果图适配(Android和IOS)全尺寸和标注规范-(二)(360x640)
  7. 【滑窗】B024_LC_和相同的二元子数组(暴力前缀和 / map 优化)
  8. 计算机 和金融主要学什么,计算机和金融哪个更好?未来发展有什么区别?
  9. c++动态库调试中的脑壳疼
  10. phpstorm php-cs-fixer 格式化代码