7

オブジェクトのリストから詳細ビューを作成するためのスラッグの適切な使用について多くのことを読んだ後。しかし、私はまだそれを機能させるのに問題があります。テンプレートに次のようなオブジェクトのリストを表示しています。

{% for thing in thing_list %}
   <div class='thing-detail'><a href='{% url detail %}'><img src='theimage.png' />
{% endfor %}

しかし、でNoReverseMatchエラーが発生していますdetail

正規表現に何か問題があるか、これを行うためのより良い方法が欠けていると思います。

正規表現:

url(r'^thing/(?P<slug>[\w-]+)/$', 'views.detail', name='detail'),

意見:

def detail(request, slug):
    thing = get_object_or_404(Thing, slug=slug)
    return render(request, 'detail.html', {'thing': thing})

モデル:

class Thing(models.Model):
    user = models.ForeignKey(User)
    created_on = models.DateTimeField(auto_now_add=True)
    slug = models.SlugField()

    def save(self, **kwargs):
        slug = '%s' % (self.user)
        unique_slugify(self, slug)  ## from http://djangosnippets.org/snippets/1321/
        super(Thing, self).save()

助けてくれてありがとう!

4

1 に答える 1

7

detailURLを作成するために引数を渡していません。あなたはおそらくこれをしたいでしょう:

{% url "detail" thing.slug %}

detailこれにより、指定されたスラッグが入力された URL が作成されます。

于 2012-12-14T22:13:22.960 に答える