【发布时间】:2013-01-04 17:12:16
【问题描述】:
我在尝试渲染模板时遇到以下错误:
NoReverseMatch at /things/
Reverse for 'edit_things' with arguments '(u'<function generate at 0x10a970aa',)' and
keyword arguments '{}' not found.
在我的模板中,以下工作:
<a href="{% url add_thing %}" class="btn_plus">
但是我在这里得到一个错误:
<td onclick="document.location = '{% url edit_thing thing.guid %}';" class="edit" id="edit_thing_{{ forloop.counter }}"> </td>
我们没有使用: {% 从未来 % 加载 url}。这是 Django 1.4。
在我的网址中:
url(r'^edit_thing/(?P<thing_id>[\w_-]{1,32})/$', 'edit_thing', name='edit_thing'),
视图看起来像:
def edit_thing(request, thing_id):
对出了什么问题有任何想法吗?我不明白为什么 add_things 在模板中可以正常工作,并且一旦到达 edit_thing 就会崩溃。会不会是 edit_thing 需要一个参数?我已经尝试了 Stackoverflow 上的所有内容,并尝试了各种组合(包括从未来加载 url,等等)。
这是我的模型:
class Thing(models.Model):
guid = models.CharField(max_length=Guid.LENGTH, blank=True, null=True, unique=True, default=Guid.generate)
class Meta:
app_label = 'things'
【问题讨论】:
-
你试过
{% url things:edit_thing thing.guid %}吗? (假设您的应用名称实际上是things) -
你能粘贴你的东西模型吗?另外,试试 {% url edit_thing thing_id=thing.guid %}
-
好的,所以我尝试了 {% url things:edit_thing thing.guid %},这解决了问题。现在我遇到的问题是:
u'things' is not a registered namespace。我的INSTALLED_APPS中有things。 -
什么 django 版本?最好是
{% load url from future %}和{% url 'things:edit_thing' thing.gui %}。 -
也许您的模型定义中需要 default=Guid.generate() 。我猜你需要函数的结果而不是函数本身