0

そのすべての単純さの問題は、開発サーバー上の Django テンプレートでは「ユーザー」オブジェクトにアクセスできますが、Apache サーバーではアクセスできないことです。TEMPLATE_CONTEXT_PROCESSORS で「django.core.context_processors.request」を有効にしました。

これは、開発サーバーでは想定されているように動作しますが、Apache サーバーでは動作しないテンプレートのコードの例です (テストのために user と request.user の両方を配置しました)。

{{ user.get_profile.user_type }}
{{ request.user.get_profile.user_type }}

そして、ここにビューがあります:

class NotificationsListView(LoginRequiredMixin, CorrectUserMixin, TemplateView):

    error_message = 'Oops, something went wrong. \
                    The browser was trying to access someone else\'s notification list.'

def get_context_data(self, **kwargs):
        my_id           = self.request.user.id
        user_type       = self.request.user.get_profile().user_type

        if user_type == 'Developer':
            self.template_name  = 'my_notifications_developer.html'
            notifications       = RequestNotification.objects.filter(receiver__id = my_id, seen=False).order_by('-time_created')
        else:
            self.template_name  = 'my_notifications_charity.html'
            notifications       = RequestNotification.objects.filter(receiver__id = my_id, seen=False).order_by('-time_created')

        # needed for correct user mixin
        self.url_id            = self.kwargs['pk']
        return {
            'params':   kwargs,
            'notifications': notifications,
        }
4

1 に答える 1