Отправить контекст шаблона в представление на основе класса

Как я могу передать контекст моему шаблону в представлении, основанном на классе, с помощью функции get_object? Вот мой класс:

class DetailMessages(LoginRequiredMixin, DetailView, ChannelFormMixin):
    template_name = 'DM/chat.html'
    def get_object(self, *args, **kwargs):
        my_username = self.request.user.username
        username = self.kwargs.get("username")
        channel, _ = Channel.objects.get_dm_channel(my_username, username)
        if channel == None:
            raise Http404
        context = {"example1" : "I want this on the template", "example2" : "I want this on the template too"}
        return channel

Обычно смешивать методы в представлениях, основанных на классах, не очень хорошая идея. Вы можете передавать контекст двумя способами: в get() или get_context_data(). Примеры:

# or

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context["example1"] = "I want this on the template"
    context["example2"] = "I want this on the template too"
    return context

# or

def get(self, request, *args, **kwargs):
    context = {}
    context["example1"] = "I want this on the template"
    context["example2"] = "I want this on the template too"
    return render(..., context=context)

Если вам не нужно работать с методом get() (или post()), то гораздо лучше оставить управление контекстом методу get_context_data().

Вернуться на верх