首页 > 后端开发 > Python教程 > 在Django框架中伪造捕捉到的URLconf值的方法

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-10 15:09:08
原创
1328 人浏览过

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

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

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

登录后复制

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

urlpatterns = patterns('',
  (r'^mydata/(&#63;P<month>\w{3})/(&#63;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/(&#63;P<month>\w{3})/(&#63;P<day>\d\d)/$', views.my_view),
)

登录后复制

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

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
python - django'没有名为'mdx_markwdown'的模块
来自于 1970-01-01 08:00:00
0
0
0
python - Django 模型foreignKey 参考
来自于 1970-01-01 08:00:00
0
0
0
angular.js - angularjs和django结合的问题
来自于 1970-01-01 08:00:00
0
0
0
解决Django中的django.db.utils.NotSupportedError错误
来自于 1970-01-01 08:00:00
0
0
0
wsgi - apache和django之间如何调用
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板