2012-12-14 58 views
7

阅读了很多关于正确使用slug从对象列表创建详细视图的内容。但是,我仍然有问题让它为我工作。我在我的模板显示对象的列表,如:在Django的Slug Url Regex

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

,但我对detail得到一个NoReverseMatch错误。

我觉得我的正则表达式可能有问题,或者只有一种更好的方法来做到这一点,我错过了。

正则表达式:

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。你可能想这样做。

{% url "detail" thing.slug %} 

,这将创造一个detail URL被填充到给定塞

+0

我觉得“细节”应该被包裹在报价.. – mccc