gpt4 book ai didi

python - 如何在基于 Django 类的 View 中访问当前用户

转载 作者:太空狗 更新时间:2023-10-30 00:31:39 25 4
gpt4 key购买 nike

我无法在基于 Django 类的 View 中访问当前登录的用户:

模型.py:

class Userproject(models.Model):
class Meta:
verbose_name = u'pp'
verbose_name_plural = u'pps'

user = models.ForeignKey(settings.AUTH_USER_MODEL,
related_name="project", verbose_name=_("Владелец проекта"))
#user = models.ForeignKey(User, unique=True)

name = models.TextField(u'Название проекта', unique=True)
date_created = models.DateTimeField(u'Дата создания',
default=datetime.now(), db_index=True)
date_until = models.DateTimeField(u'Оплачен по', default=datetime.now(), db_index=True)

views.py:

@login_required
class UserprojectList(ListView):
context_object_name = 'userproject_list'
queryset = Userproject.objects.filter(user=self.request.user)
template_name = 'userproject_list.html'

当我导航到 url 时,我看到错误:未定义名称“self”

如果我将 self.request.user 更改为 request.user错误是:name 'request' is not defined

请注意,在没有用户过滤的情况下, View 可以正常工作并显示数据 Django 1.8.5

最佳答案

你可以覆盖get_queryset:

@login_required
class UserprojectList(ListView):
context_object_name = 'userproject_list'
template_name = 'userproject_list.html'
def get_queryset(self):
return Userproject.objects.filter(user=self.request.user)

另外你不能在类上使用装饰器,所以你必须这样写:

from django.utils.decorators import method_decorator

class UserprojectList(ListView):
context_object_name = 'userproject_list'
template_name = 'userproject_list.html'

@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(UserprojectList, self).dispatch(*args, **kwargs)

def get_queryset(self):
return Userproject.objects.filter(user=self.request.user)

关于python - 如何在基于 Django 类的 View 中访问当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com