Django 路由系统URLconf的使用


Posted in Python onOctober 11, 2018

URLconf是什么?

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的view函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。

urlpatterns = [
   url(正则表达式, views视图函数,参数,别名),
 re_path(正则表达式, views视图函数,参数,别名), (在2.0以上版本中使用re_path),
]

参数说明:

正则表达式(regex):

regex是正则表达式的通用缩写,它是一种匹配字符串或url地址的语法。Django拿着用户请求的url地址,在urls.py文件中对urlpatterns列表中的每一项条目从头开始进行逐一对比,一旦遇到匹配项,立即执行该条目映射的视图函数或二级路由,其后的条目将不再继续匹配。因此,url路由的编写顺序至关重要!需要注意的是,regex不会去匹配GET或POST参数或域名,例如对于https://www.example.com/myapp/,regex只尝试匹配myapp/。对于https://www.example.com/myapp/?page=3,regex也只尝试匹配myapp/。如果你想深入研究正则表达式,可以读一些相关的书籍或专论,但是在Django的实践中,你不需要多高深的正则表达式知识。

性能注释:正则表达式会进行预先编译当URLconf模块加载的时候,因此它的匹配搜索速度非常快,你通常感觉不到。

view试图函数:

当正则表达式匹配到某个条目时,自动将封装的HttpRequest对象作为第一个参数,正则表达式“捕获”到的值作为第二个参数,传递给该条目指定的视图。如果是简单捕获,那么捕获值将作为一个位置参数进行传递,如果是命名捕获,那么将作为关键字参数进行传递。

参数(kwargs):

任意数量的关键字参数可以作为一个字典传递给目标视图。

别名(name):

对你的URL进行命名,可以让你能够在Django的任意处,尤其是模板内显式地引用它。相当于给URL取了个全局变量名,避免了高额的维护成本。

Django 路由系统URLconf的使用 

示例:

例如服务器ip地址为127.0.0.1:8080

urlpatterns = [
  path('admin/', admin.site.urls),
  re_path(r'^$', views.index),      # 当用户访问 http://127.0.0.1:8080 时,后端用view.py中的index()函数处理。$表示结尾
  re_path(r"^host/(\d+)",views.host),  # URL示例:127.0.0.1:8080/host/100 \d代表数字;()表示无名分组且可以传参,函数内参数和次顺序一一对应;
      # +表示重复一次或多次前面类型的字符。(\d+)表示不定位数的数字
  re_path(r'^host_list/(\d{4})/(\d{2})$', views.host_list), # URL示例: 127.0.0.1:8080/host_list/2015/10  {4}表示重复四次前面的数字
  url(r"^register",views.register,name="reg"),  # 127.0.0.1:8080/register reg是URL别名,在模板中,例如<a href="{% url 'reg' %}" rel="external nofollow" ></a>
  re_path(r"^login",views.login,name="log"),  # 127.0.0.1:8080/login
  re_path(r'^article/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})',views.article_month), # 127.0.0.1:8080/article/2015/09/10 ?P表示有名分组,
      # ()内是分组,<>内是组名函数内参数名必须和组名相同,顺序可以乱。
]

路由分发

如果一个项目下有很多的app,那么在urls.py里面就要写巨多的urls映射关系。这样看起来很不灵活,而且杂乱无章。

我们可以根据不同的app来分类不同的url请求。

首先,在urls.py里写入urls映射条目。注意要导入include方法

url(r'^app1/',include("app01.urls")), # 路由分发,所有app1开头的,全部转移到app01下的urls.py里去处理

要在app01下创建一个urls.py文件,用来处理请求的URL,使之与views建立映射

urlpatterns = [
  re_path(r'index/$', views.index), # 127.0.0.1:8080/app1/index
]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python学习数据结构实例代码
May 11 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
python使用itchat实现手机控制电脑
Feb 22 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
python配置grpc环境
Jan 01 Python
numpy中的ndarray方法和属性详解
May 27 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
pycharm永久激活超详细教程
Oct 29 Python
Python os和os.path模块详情
Apr 02 Python
Python 中的lambda函数介绍
Oct 10 #Python
django项目搭建与Session使用详解
Oct 10 #Python
Python 变量类型详解
Oct 10 #Python
Python中几种属性访问的区别与用法详解
Oct 10 #Python
Python的argparse库使用详解
Oct 09 #Python
详解Python3中的迭代器和生成器及其区别
Oct 09 #Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 #Python
You might like
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
python实现websocket的客户端压力测试
2019/06/25 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
J2EE中的容器都包括哪些
2013/08/21 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
面试后的英文感谢信
2014/02/01 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
硕士学位论文评语
2014/12/31 职场文书
结婚保证书
2015/01/16 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
开网店计划分析
2019/07/30 职场文书
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript