0

尝试渲染模板时出现以下错误:

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 }}">&nbsp;&nbsp;&nbsp;</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'
4

1 回答 1

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'

应该这样做

于 2013-01-21T16:36:30.363 回答