【发布时间】:2022-01-15 20:16:38
【问题描述】:
我希望所有 djaango url 使用 slug 字段,之前或之后没有任何参数,默认情况下 只有一个 url 可以使用这个方法
Views.py
class ArticleDetail(DetailView):
def get_object(self):
slug = self.kwargs.get('slug')
article = get_object_or_404(Article.objects.published(), slug=slug)
ip_address = self.request.user.ip_address
if ip_address not in article.hits.all():
article.hits.add(ip_address)
return article
class CategoryList(ListView):
paginate_by = 5
template_name = 'blog/category_list.html'
def get_queryset(self):
global category
slug = self.kwargs.get('slug')
category = get_object_or_404(Category.objects.active(), slug=slug)
return category.articles.published()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['category'] = category
return context
urls.py
urlpatterns = [
path('<slug:slug>', ArticleDetail.as_view(), name="detail"),
path('<slug:slug>', CategoryList.as_view(), name="category"),
]
这是我的 django 博客代码, 我不想在 url 中写文章或类别 & ...,只是 slug
mysite .com/article-slug ... mysite .com/category-slug
【问题讨论】:
-
它总是会触发
Article视图,无论该 slug 是否有Article。 -
这能回答你的问题吗? Django multiple slug urls
标签: django django-urls