Django中的Slug Url正则表达式

Posted

技术标签:

【中文标题】Django中的Slug Url正则表达式【英文标题】:Slug Url Regex in Django 【发布时间】:2012-12-02 22:37:02 【问题描述】:

在阅读了很多关于正确使用 slug 从对象列表中创建详细视图的信息之后。但是,我仍然无法让它为我工作。我在模板中显示对象列表,例如:

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

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您没有传递任何参数来构建detail URL。你可能想这样做:

% url "detail" thing.slug %

这将创建一个 detail URL 并填充给定的 slug。

【讨论】:

以上是关于Django中的Slug Url正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

urlpattern 的正则表达式

正则表达式 slug 在另一个词之前

django 2.2.5 URL 路径中的 URL 正则表达式

停止基于 / 为 Django 中的 url 捕获任何字符串(正则表达式)

Django:如何访问中间件类中的 URL 正则表达式参数?

获取 Django url 正则表达式中的多个参数