Python Django NoReverseMatch异常,URL.py中有缓存页面 问题:
在模板中使用Python Django NoReverseMatch异常,URL.py中有缓存页面 问题:,python,django,Python,Django,在模板中使用url标记时,为什么在Django 1.4下的url.py中使用cache\u页面函数会导致NoReverseMatch错误 安装程序 views.py url.py 在缓存\u页面之后: index.html 错误消息 错误消息指出的错误行当然是: {% url my_project.my_app.views.index %} 到目前为止我都试过了 大量的谷歌搜索和搜索等等 将代码简化为上面的示例,以排除其他冲突 在views.py中成功地将cache\u页面用作装饰器(根据文
url
标记时,为什么在Django 1.4下的url.py
中使用cache\u页面
函数会导致NoReverseMatch错误
安装程序
views.py
url.py
在缓存\u页面之后
:
index.html
错误消息
错误消息指出的错误行当然是:
{% url my_project.my_app.views.index %}
到目前为止我都试过了
- 大量的谷歌搜索和搜索等等
- 将代码简化为上面的示例,以排除其他冲突
- 在
中成功地将views.py
用作装饰器(根据文档,不推荐使用)cache\u页面
- 献给我们强大的Django霸主
标签URL
- 虚线路径
- 可调用
'my_project.my_app.views.index'
是虚线路径,然后Django将通过查找映射字典Django.core.urlresolvers.get_resolver(None).reverse_dict>获得实际函数index()
,并将其用作匹配反向URL的键
但是,当您通过cache\u视图
包装视图.index
时,映射词汇表中的键将成为包装器。因此,查找失败并引发NoReverseMatch
。这既不方便又容易出错,但我不确定这是否是一个bug
然后,您可以使用URL
label解决这个问题
url(r'^$', cache_page(60 * 60)(views.index), name='my_index'),
{# in template #}
{% url my_index %}
或者在views.py中使用cache\u页面
作为您提到的装饰者。非常感谢!正如您所建议的,我能够通过将name='my_index
添加到url.py中的我的行和{%url my_index%}
添加到模板中来解决问题。此外,正如您所指出的,我也不确定这是否是一个bug,但文档中至少有一个缺点,就是建议使用url.py
cache\u页面,而不提更改模板url标记。
{% url my_project.my_app.views.index %}
NoReverseMatch at /
Reverse for 'my_project.my_app.views.index' with arguments '()' and keyword arguments '{}' not found.
{% url my_project.my_app.views.index %}
url(r'^$', cache_page(60 * 60)(views.index), name='my_index'),
{# in template #}
{% url my_index %}