gpt4 book ai didi

带有少量 url 参数的 Django DetailView

转载 作者:行者123 更新时间:2023-12-01 15:21:03 25 4
gpt4 key购买 nike

假设我有下一个模型:

class Category(models.Model):
cat_name = models.CharField(u'name',max_length=50, unique=True)
slug = models.SlugField(u'URL',unique=True)

class News(models.Model):
title = models.CharField(max_length=250)
slug = models.SlugField(unique=True)
category = models.ForeignKey(Category,null=True,on_delete=models.SET_NULL)

我的 get_absolute_url 函数看起来像这样:

def get_absolute_url(self):
return ('news:detail',(), {'slug':self.slug})

并且 url 看起来像 /article/<slug>如果我想要像 <category.slug><news.slug> 这样的 URL ?我该怎么做?

最佳答案

你可以这样做:

# models.py
def get_absolute_url(self):
return ('news:detail', (), {
'category_slug': self.category.slug,
'slug': self.slug,
})

# views.py
class NewsDetail(DetailView):
model = News
slug_field = 'slug'
slug_url_kwarg = 'slug'

def get_queryset(self):
return News.objects.filter(category__slug=self.kwargs['category_slug'])

# urls.py
url(r'(?P<category_slug>[a-z0-9\-]+)/(?P<slug>[a-z0-9\-]+)/$', NewsDetail.as_view(), name='news')

所以我们的想法是在您的 url 定义中添加 2 个参数。最后一个通常用于查询新闻行,第一个将由 get_queryset 使用以按指定类别过滤新闻。

有关文档中 url 中参数的更多信息 - https://docs.djangoproject.com/en/1.9/topics/http/urls/#named-groups

关于带有少量 url 参数的 Django DetailView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com