我在使用grappelli进行管理的django项目上工作了一段时间,今天,我的change_form.html模板突然抛出了以下错误:
Caught NoReverseMatch while rendering: Reverse for "grp_related_lookup" with arguments '()' and keyword arguments '{}' not found.违规的代码行是第38行:
37 $.each(related_lookup_fields_fk, function() {
38 $("#id_" + this).grp_related_fk({lookup_url:"{% url grp_related_lookup %}"});
39 });它前面有以下代码:
var related_lookup_fields_fk = {% get_related_lookup_fields_fk adminform.model_admin %};显然,导致问题的是{% url grp_related_lookup %}位。
我不明白模板是如何将grp_related_lookup解析为grappelli.views.related.related_lookup的。我试过用grappelli.views.related.related_lookup代替grappelli.views.related.related_lookup,但这也不起作用。此外,在模板中,违规行如下所示:
$("#id_" + this).grp_related_fk({lookup_url:"{% url grp_related_lookup %}"});但是在错误消息中,它看起来如下:
$("#id_" + this).grp_related_fk({lookup_url:"{% url 'grp_related_lookup' %}"});我不知道围绕grp_related_lookup的单引号是否与问题有关。django就是这样实现函数调用的吗?它是否将字符串'grp_related_lookup'传递给url模板标记?如果是这样的话,是什么使它突然破裂的呢?
一些补充信息:
related_lookup_fields的值是一个空列表[]。我没有在我的related_lookup_fields中定义任何admin.py。grappelli.views.related.related_lookup视图函数中抛出了几个调试语句,它似乎没有被调用。希望有人能给我指明正确的方向。谢谢!
发布于 2011-08-24 21:48:55
您的URLconf中还包括URLconf吗?我看到的唯一原因会导致这个错误。您可以尝试使用python manage.py shell
from django.core.urlresolvers import reverse
print reverse('grp_related_lookup')如果这一行返回正确的URL,则不应该在模板中获得NoReverseMatch。
关于grp_related_lookup的引语不应该引起关注。{% url %}标记接受引用字符串和未引用字符串作为第一个参数,因此django将其规范化为引号字符串。这种行为将在未来发生变化:您将能够使用未引用的字符串将模板变量传递给{% url %}。{% url foo %}和{% url "foo" %}不会给出相同的结果,有关这方面的详细信息,请参阅1.3发行说明。
发布于 2013-04-03 11:48:53
在Django 1.5和Grappelli 2.4.4中,我遇到了同样的行为。
要解决这个问题,我必须添加
url(r'^grappelli/', include('grappelli.urls')),敬urlpatterns。
发布于 2015-01-21 06:14:30
今天,当我尝试删除admin.Reverse for 'app_list' with arguments '()' and keyword arguments '{'app_label': ''}' not found.中的数据时,我遇到了这个问题。
我已经把url(r'^grappelli/', include('grappelli.urls'))放在urls.py里了
解决方案非常奇怪:只需将grappelli更新为最新版本即可。(我将其更新为2.5.6至2.6.3)
https://stackoverflow.com/questions/7182532
复制相似问题