Django 没有反向匹配错误 - 模板渲染

Posted

技术标签:

【中文标题】Django 没有反向匹配错误 - 模板渲染【英文标题】:Django No Reverse Match Error - Template Rendering 【发布时间】: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 ">&nbsp;&nbsp;&nbsp;</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 需要一个参数?我已经尝试了 *** 上的所有内容,并尝试了各种组合(包括从未来加载 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() 。我猜你需要函数的结果而不是函数本身 【参考方案1】:

您需要更改模型定义。更改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'

应该这样做

【讨论】:

在数据库中,我有:'function generate at 0x10a970aa' 作为 guid,这导致它中断。谢谢!

以上是关于Django 没有反向匹配错误 - 模板渲染的主要内容,如果未能解决你的问题,请参考以下文章

模板渲染期间的 Django 错误。找不到带有参数“(”,)'和关键字参数''的'name'的反向

Django:密码重置时没有反向匹配[重复]

Django新手:“找不到反向”

Django 2.0 - 渲染错误的模板(没有错误)

我怎样才能避免在 django 中没有反向匹配

渲染时 NoReverseMatch:“django.contrib.auth.views.login”的反向