Имя Django 'request' не определено при фильтрации по пользователям - PullRequest
0 голосов
/ 28 апреля 2019

В Django я пытаюсь отфильтровать некоторые посты на основе пользователя.Я посмотрел его и обнаружил, что способ сделать это (или способ, который был предложен), это использовать request.user, но когда я делаю это, я получаю сообщение об ошибке: name 'request' is not defined

View:

class MyPost(ListView):
    model = Post
    template_name = "public/list.html"
    paginate_by = 3

    def get_context_data(self, **kwargs):
        context = super(MyPost, self).get_context_data(**kwargs)
        context['post'] = Post.objects.filter(live=True, user=request.user)
        return context

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

1 Ответ

3 голосов
/ 28 апреля 2019

Попробуй так:

def get_context_data(self, **kwargs):
    context = super(MyPost, self).get_context_data(**kwargs)
    context['post'] = Post.objects.filter(live=True, user=self.request.user)  # used self for object reference
    return context

Я бы также рекомендовал создать подкласс вашего ListView из LoginRequiredMixin , чтобы гарантировать, что представление доступно только для вошедшего в систему пользователя. Вы можете сделать это так:

from django.contrib.auth.mixins import LoginRequiredMixin

class MyPost(LoginRequiredMixin, ListView):
   # rest of the code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...