2012-12-14 12 views
7

スラッグの適切な使い方をよく読んで、オブジェクトのリストから詳細ビューを作成した後。しかし、私はまだそれが私のために働くことに問題を抱えています。私は次のように私のテンプレート内のオブジェクトのリストを表示しています:Slug Url Djangoの正規表現

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

しかしdetailNoReverseMatchエラーを取得しています。

私は正規表現に何か問題があるか、それとも私が行方不明になっているより良い方法があることを実証します。

正規表現:

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() 

はご協力いただきありがとうございます!

答えて

7

detail URLを構築するための引数は一切渡していません。あなたはおそらくこれをしたい:

に充填与えられたスラグと detail URLが作成されます
{% url "detail" thing.slug %} 

+0

私は、「詳細」を引用符でラップされるべきだと思います...。 – mccc