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%}。これはDjango1.4です。

私のURLで:

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 に答える