路由分发与名称空间

Posted mayrain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路由分发与名称空间相关的知识,希望对你有一定的参考价值。

路由分发

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

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

利用路由分发之后 总路由不再干路由与视图函数的直接对应关系
而是做一个分发处理
    识别当前url是属于哪个应用下的 直接分发给对应的应用去处理
    
"""


# 总路由
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的时候我们在起别名的时候会加上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框架——路由分发名称空间虚拟环境视图层三板斧JsonResponse对象request获取文件FBV与CBVCBV源码剖析模版层

Django学习——路由分发名称空间伪静态本地虚拟环境

Django之路由层 (有名和无名分组 反向解析 路由分发 名称空间)

04 django 框架 路由分发,反向解析,上传文件,

数据库表中字段的增删改查,路由基础.有名无名分组.多app共存的路由分配.多app共存时模板冲突问题.创建app流程.七路由分发.八路由别名,九名称空间.十反向解析.十

Django之路由(urls)层