一.路由分发:

路由分发是指:总路由不再直接做路由与视图函数的对应关系,而是将获取的路由分发给下面的app去处理对应关系

from django.conf.urls import url,include
from app03 import urls as app03_urls
from app01 import urls as app01_urls
from app02 import urls as app02_urls
urlpatterns = [
url(r'^app03/',include(app03_urls)),
url(r'^app01/',include(app01_urls)),
url(r'^app02/',include(app02_urls)) ]

首先导入include模块,其次确保app下有urls文件,运行效果如下:

如果想访问app01下的index页面,只需要加上app01/index即可

同样的app中也可以有views文件和templates文件夹,这样每个app就是独立的前后端程序

二.反向解析

试想一个场景,你有200多个a标签,href都指向index/,有一天在urls里面index改为了new_index,那么你只能手动改变a标签中的href,当你改完,又变成了my_index,那么一天的时间都可能在改地址,那么有没有什么方法,不再把程序写死,反向解析就是应用于此。

通过名字反向推导出页面文件,类似于字典

无分组:

urlpatterns = [
url(r'^login/',views.login,name='login_name'),
]

第一步指定name

在后端的使用:

首先导入reverse模块

from django.shortcuts import reverse

其次在views的函数里面:

def login(request):
res=reverse('login_name')#login_name是在urls里面定义的名字
print(res)

其中res的打印如下:

在前端的使用:

<a href="{%url 'login_name'%}">1111111111</a>

语法:{%url ‘ 名称’%}

这样的写法就不会写死了,无论怎么改,只要名字不变,都可以导向该页面

无名分组:

urlpatterns = [
url(r'^login/(\d+)',views.login,name='login_name'),
]

views的函数:

def login(request,xxx):
res=reverse('login_name',args=(xxx,))
print(res)

打印一下res:

res=reverse('login_name',args=(xxx,)),其中的args=(xxx,),不是固定的,如果你喜欢写个1也不会影响结果,
例如res=reverse('login_name',args=(1,)),只要满足匹配规则,都是可以随意写的

在前端的使用:

<a href="{%url 'login_name' xxx%}">1111111111</a>

其中xxx是我在renderf中传入的参数,可以动态的指定路径,如果嫌弃麻烦,可以随意写个满足正则的参数,我的正则是\d+,所以下面的也是可以的

<a href="{%url 'login_name' 2333%}">1111111111</a>

语法:{%url ‘ 名称’ 参数%},必须要有,不然不能匹配

有名分组:

urlpatterns = [
url(r'^login/(?P<year>\d+)',views.login,name='login_name'),
]

views的函数:

def login(request,year):
res=reverse('login_name',kwargs={'year':year})
print(res)

打印一下res:

res=reverse('login_name',kwargs={'year':year},其中的kwargs={'year':year}同样不是固定的,如果你喜欢写个1也不会影响结果,
只要满足匹配规则,都是可以随意写的

在前端的使用:


<a href="{%url 'login_name' xxx%}">1111111111</a>

在前端使用是和无名分组一样的

PS:在使用无名分组,有名分组的时候,前端一定要在定义的名字后面加上参数,不然不能匹配

 

最新文章

  1. android 模拟2048
  2. VB6与VB.NET对照表
  3. 3.EasyUI学习总结(三)——easyloader源码分析
  4. 《深入浅出Windows 10通用应用开发》
  5. 树莓派B+上手小记--使用HDMI线连接显示器
  6. 并查集+拓扑排序 赛码 1009 Exploration
  7. 【转】android UI进阶之自定义组合控件
  8. placeholder 解决UITextField中placeholder和text文本同时显示的问题
  9. bzoj 1492 [NOI2007]货币兑换Cash(斜率dp+cdq分治)
  10. Android 自定义对话框(Dialog)位置,大小
  11. hdu3081 Marriage Match II(最大流)
  12. mysql中的unix_timestamp函数
  13. Jetty的工作原理
  14. django下命令行工具
  15. MySQL慢日志功能分析及优化增强
  16. js中的blob,图片base64URL,file之间的关系
  17. Vue开源项目汇总(史上最全)(转)
  18. numpy的random模块
  19. 【转】嵌入式系统 Boot Loader 技术内幕,带你完全了解Boot Loader
  20. SQL - 先安装SQL2008 R2后安装AD导致无法正常登陆数据库(无法启动MSSQLSERVER)

热门文章

  1. 小程序 textarea、input 层级过高,导致填写内容穿透,z-index无效问题解决方案。
  2. HTML 练习绑定onclick事件
  3. DataPipeline丨金融行业如何统一管理单个任务下所有API的同步情况
  4. Zabbix系统介绍
  5. Windows Server 2012 R2 安装密钥(只适用安装,不支持激活)
  6. JAVA中AWT编程
  7. MongoDB 4.0 开发环境搭建集群
  8. Java笔试题库之选题题篇【71-140题】
  9. ConfirmCancelDialog【确认取消对话框】
  10. PopupWindowMenuUtil【popupwindow样式菜单项列表】