尝试渲染模板时出现以下错误:
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>
我们没有使用: {%load url from future%}。这是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'
答案 0 :(得分:3)
您需要更改模型定义。更改default
:
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'
您正在获取函数的字符串表示形式,因为您正在传递函数本身:
'(u'<function generate at 0x10a970aa',)'
换句话说:
>>> unicode(Guid.generate)
u'<function generate at 0x10a970aa'
>>> unicode(Guid.generate()) # This is what you need
u'Result'
应该这样做