在Django框架中伪造捕捉到的URLconf值的方法


Posted in Python onJuly 18, 2015

比如说你有匹配某个模式的一堆视图,以及一个并不匹配这个模式但视图逻辑是一样的URL。 这种情况下,你可以通过向同一个视图传递额外URLconf参数来伪造URL值的捕捉。

例如,你可能有一个显示某一个特定日子的某些数据的应用,URL类似这样的:

/mydata/jan/01/
/mydata/jan/02/
/mydata/jan/03/
# ...
/mydata/dec/30/
/mydata/dec/31/

这太简单了,你可以在一个URLconf中捕捉这些值,像这样(使用命名组的方法):

urlpatterns = patterns('',
  (r'^mydata/(?P<month>\w{3})/(?P<day>\d\d)/$', views.my_view),
)

然后视图函数的原型看起来会是:

def my_view(request, month, day):
  # ....

这种解决方案很直接,没有用到什么你没见过的技术。 当你想添加另外一个使用 my_view 视图但不包含month和/或者day的URL时,问题就出现了。

比如你可能会想增加这样一个URL, /mydata/birthday/ , 这个URL等价于 /mydata/jan/06/ 。这时你可以这样利用额外URLconf参数:

urlpatterns = patterns('',
  (r'^mydata/birthday/$', views.my_view, {'month': 'jan', 'day': '06'}),
  (r'^mydata/(?P<month>\w{3})/(?P<day>\d\d)/$', views.my_view),
)

在这里最帅的地方莫过于你根本不用改变你的视图函数。 视图函数只会关心它 获得 了 参数,它不会去管这些参数到底是捕捉回来的还是被额外提供的。month和day

Python 相关文章推荐
深度剖析使用python抓取网页正文的源码
Jun 11 Python
centos系统升级python 2.7.3
Jul 03 Python
Python实现模拟登录及表单提交的方法
Jul 25 Python
python实现备份目录的方法
Aug 03 Python
分享一下如何编写高效且优雅的 Python 代码
Sep 07 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
Nov 20 Python
Python中的list与tuple集合区别解析
Oct 12 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
Python中关于logging模块的学习笔记
Jun 03 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 #Python
在Django的URLconf中使用命名组的方法
Jul 18 #Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 #Python
在Django的URLconf中进行函数导入的方法
Jul 18 #Python
在Django的form中使用CSS进行设计的方法
Jul 18 #Python
在Django的视图中使用form对象的方法
Jul 18 #Python
详解Django中的form库的使用
Jul 18 #Python
You might like
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
模拟select的代码
2011/10/19 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
javascript特殊文本输入框网页特效
2016/09/13 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
深入理解Python 代码优化详解
2014/10/27 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
使用Python对Excel进行读写操作
2017/03/30 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
django model object序列化实例
2020/03/13 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
python开发一款翻译工具
2020/10/10 Python
python搜索算法原理及实例讲解
2020/11/18 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
停电放假通知
2015/04/14 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android