【问题标题】:Django No Reverse Match Error - Template RenderingDjango 没有反向匹配错误 - 模板渲染
【发布时间】: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 需要一个参数?我已经尝试了 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() 。我猜你需要函数的结果而不是函数本身

标签: django django-templates


【解决方案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,这导致它中断。谢谢!
猜你喜欢
  • 2021-08-04
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 2012-10-21
  • 2017-04-25
  • 2011-11-03
相关资源
最近更新 更多