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 @ 2020-05-31 19:48  pythoner_wl  阅读(159)  评论(0)    收藏  举报