Передача дополнительного контекста в CBV - PullRequest
0 голосов
/ 17 февраля 2019

У меня проблемы с передачей некоторого дополнительного контекста в CBV.Когда я передаю 'userprofile' в качестве контекста, он предотвращает успешную передачу любого другого контекста в представление.

Мое представление началось так:

class OrderDetail(LoginRequiredMixin, DetailView):
    model = Order

    def dispatch(self, request, *args, **kwargs):
        try: 
            user_checkout = UserCheckout.objects.get(user=self.request.user)
        except:
            user_checkout = None

        if user_checkout:
            obj = self.get_object()
            if obj.user == user_checkout and user_checkout is not None:  #checks to see if the user on the order instance ties to the user of the current request
                return super(OrderDetail, self).dispatch(request, *args, **kwargs)
            else:
                raise Http404

        else:
            raise Http404

Затем я попытался добавить это

     def get_context_data(self, *args, **kwargs):
         context = super(OrderDetail, self).get_context_data(*args, **kwargs)            
         userprofile = UserProfile.objects.get(user=self.request.user)
         context["userprofile"] = userprofile 

Я не получаю никаких ошибок.Просто при загрузке страницы ни одно из значений, которые должны появиться (в зависимости от контекста), не отображается.

Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2019

Я думаю, вам нужно добавить return context в вашем get_context_data методе:

def get_context_data(self, *args, **kwargs):
     context = super(OrderDetail, self).get_context_data(*args, **kwargs)            
     userprofile = UserProfile.objects.get(user=self.request.user)
     context["userprofile"] = userprofile
     return context

Кроме того, поскольку ваш userprofile имеет отношение (FK или OneToOne) с Модель пользователя , вы можете просто получить к ним доступ к шаблону (без передачи его в контексте) следующим образом:

// If OneToOne
{{ user.userprofile }}

// If FK

{{ user.userprofile_set.first }}  // using reverse relationship to fetch userprofiles

Для получения более подробной информации, пожалуйста, проверьте документацию по OneToOne , FK , Обратная связь .

...