django框架——路由层 urls.py

路由层 urls.py

路由匹配

# 路由匹配
url(r'test',views.test),

url方法第一个参数是正则表达式
	正则表达式能够匹配 就会立刻停止往下匹配

django 在url后面加斜杠重定向,如果匹配不成功

# 取消自动加斜杠
APPEND_SLASH = False/True

无名分组

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

def test(request,xx):
    return HttpResponse('test')
  
位置参数传递给视图函数

有名分组

url(r'^testadd/(?P<year>\d+)',views.testadd)

def testadd(request,year):
    return HttpResponse('testadd')

关键字参数传递给视图函数

无名有名是否可以混合使用

不能混用  但是同一个分组可以使用多次

url(r'^index/(\d+)/(\d+)/(\d+)/',views.index),
url(r'^index/(?P<year>\d+)/(?P<age>\d+)/(?P<month>\d+)/',views.index),

反向解析

	url(r'^func_kkk/',views.func,name='ooo')
# 反向解析
	# 后端反向解析
  	from django.shortcuts import render,HttpResponse,redirect,reverse
  	reverse('ooo')
    # 前端反向解析
  	<a href="{% url 'ooo' %}">111</a>

无名有名分组反向解析

# 无名分组反向解析
	url(r'^index/(\d+)/',views.index,name='xxx')

# 前端
	{% url 'xxx' 123 %}
# 后端
	reverse('xxx', args=(1,))


# 有名分组反向解析
   url(r'^func/(?P<year>\d+)/',views.func,name='ooo')
# 前端
	<a href="{% url 'ooo' year=123 %}">111</a>  
	<a href="{% url 'ooo' 123 %}">222</a>  			
# 后端	
   reverse('ooo',kwargs={'year':123}
   reverse('ooo',args=(111,))
          
统一用无名分组的反向解析形式就好

路由分发

django的每一个应用都可以有自己的 templates文件夹 urls.py static文件夹
所以,django能够非常好的做到 分组开发(每个人只写自己的app)
作为组长 只需要将手下书写的app全部拷贝到一个新的django项目中 然后在配置文件里面注册所有的app 再将所有的app整合起来

当一个django项目中的 url特别多 的时候 总路由urls.py代码非常冗余不好维护
可以利用路由分发来减轻总路由的压力

# 总路由
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前缀是app01开头 全部交给app01处理
    url(r'^app02/',include(app02_urls))   # 只要url前缀是app02开头 全部交给app02处理
  
    # 2.终极写法  推荐使用  不需要再导入应用中的路由了
    url(r'^app01/',include('app01.urls')),
    url(r'^app02/',include('app02.urls'))
    
    注意:总路由里面的url千万不能加$结尾

]

# 子路由
  # app01 urls.py
  from django.conf.urls import url
  from app01 import views

  urlpatterns = [
      url(r'^reg/',views.reg)
  ]
  # app02 urls.py
  from django.conf.urls import url
  from app02 import views

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

名称空间

不同应用出现了相同的别名,导致反向解析不能正常使用

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

如果名字不冲突 ,名称空间就不用了,加上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')
]
posted @   pythoner_wl  阅读(153)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示