呈现时捕获到异常:
Reverse for 'products.views.'filter_by_led' with arguments '()' and keyword arguments '{}' not found.
我成功地从shell导入了products.views.filter_by_led
,它工作正常,所以路径应该是正确的。
以下是url.py:
(r'^led-tv/$', filter_by_led ),
这就是产生错误的地方:
href="{% url products.views.filter_by_led %}">
我无法理解,因为这在同一个文件中运行良好:
{% url products.views.lcd_screen_size screen_size=50 %}
下面是函数定义:
def filter_by_led(request):
我不明白为什么Django会认为函数找不到该函数的相反方向。
我删除了所有*.pyc
文件并重新启动了Apache。
我做错什么了?
视图名称周围需要单引号
而不是
有三件事我可以从头想到:
尝试在命令行使用
django.core.urlresolvers.reverse
以获得(可能)更好的错误检查是否有多个指向该视图的url
对reverse的Shell调用(如上所述)非常适合调试这些问题,但有两个关键条件:
是的,这是合乎逻辑的。是的,这也很混乱,因为reverse只会抛出异常,不会给您任何进一步的提示。
URL模式示例:
然后在shell中发生了什么:
它不起作用,因为我没有提供任何参数。
现在成功了,但是。。。
现在它不工作了,因为url_id与regexp(预期为数字,提供了字符串)不匹配。
您可以将reverse与位置参数和关键字参数一起使用。语法为:
当谈到url模板标记时,有一点很有趣。Djangodocumentation给出了使用带引号的视图名称的示例:
所以我在我的HTML模板中以类似的方式使用了它:
但这对我不起作用。但异常消息给了我一个可能出错的提示-请注意视图名称周围的双引号:
当我删除引号时,它开始工作:
这让人很困惑。
相关问题 更多 >
编程相关推荐