Как добавить request.slug в общее представление класса? - PullRequest
2 голосов
/ 17 декабря 2011

Мне тяжело оборачиваться вокруг этого.

У меня есть представление, которое получает все мои проекты с помощью тега. Когда я показываю шаблон, я хочу включить этот тег в свой шаблон, чтобы я мог сделать что-то вроде: «Содержимое в {{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 Ответ

4 голосов
/ 17 декабря 2011

Если вам нужно что-то в контексте шаблона, посмотрите на изменение контекста.

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 }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...