Отправить контекст шаблона в представление на основе класса
Как я могу передать контекст моему шаблону в представлении, основанном на классе, с помощью функции 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()
.