如何将request.slug添加到泛型类视图?

时间:2011-12-17 01:31:22

标签: django django-views django-class-based-views

我很难绕过这个。

我有一个视图,通过作为标记的slug来获取我的所有项目。当我显示模板时,我希望在我的模板中包含该标记,以便我可以执行以下操作:“{{tag.name}}中的内容。但是我很难看清楚方向。任何帮助都会不胜感激。

以下是我的观点:

class TagDetail(ListView):
    """ Get all projects for a tag """

    template_name = "projects/TagDetail.html"

    def get_queryset(self):
        tags = get_list_or_404(Project, tags__slug=self.kwargs['slug'], displayed=True)
        return tags

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(TagDetail, self).dispatch(*args, **kwargs)

1 个答案:

答案 0 :(得分:4)

如果您在模板上下文中需要某些内容,请查看修改上下文。

https://docs.djangoproject.com/en/dev/ref/class-based-views/#django.views.generic.base.TemplateView.get_context_data

请注意,您实际上并未访问标记对象,因此您必须查询标记。

def get_context_data(self, *args, **kwargs):
    ctx = super(MyView, self).get_context_data(*args, **kwargs)
    ctx['slug'] = self.kwargs['slug'] # or Tag.objects.get(slug=...)
    return ctx

<!-- template -->
The slug is: {{ slug }}