gpt4 book ai didi

python - Django: 'str' 对象没有属性 'user'

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:06 24 4
gpt4 key购买 nike

这是我的 View 代码:

@login_required
def get_top(type):
o = Work.objects.filter(types = "Fan Fiction").order_by("-date_updated")[:10]
list = []
for o in o:
l.title = o.title
l.href = "/" + o.id
list.append(l)
return l

@login_required
def main_home(request):
fanfiction = get_top("ff")
poetry = get_top("pw")
originalwork = get_top("ow")
return render_to_response("Main/main_home.html", {'STATIC_URL':STATIC_URL, "poetry":poetry, "fan":fanfiction, "original":originalwork})

这是模型的代码:

class Work(models.Model):
title = models.CharField(max_length=30)
summery = models.TextField()
user = models.ForeignKey(User)
date_published = models.DateField()
date_updated = models.DateField()
one_shot = models.BooleanField()
completed = models.BooleanField()
TYPES = (
('FF', 'Fan Fiction'),
('OF', 'Original Work'),
('PW', 'Poetry Work'),
)
types = models.CharField(max_length=2, choices=TYPES)
fandom1 = models.ForeignKey(Book, blank = True, null= True, related_name='f_1')
fandom2 = models.ForeignKey(Book, blank = True, null= True, related_name='f_2')
def __unicode__(self):
return self.title + '-' + self.user.email

这是错误:'str' 对象在 "get_top("ff")"处没有属性 'user'

最佳答案

请移除@login_required 方法的get_top 装饰器。

它试图做的是,@login_required 尝试验证该用户是否已登录。这是试图在 ff 中找到一个 User 对象实例,它是一个 str 因此是堆栈跟踪。通常 @login_requiredrequest obj 获取 User,但由于您没有在 get_top 中传递它,因此出现错误。

我的建议是你应该在 views.py 中维护一组特定的方法,这些方法链接到 urls.py 中的 API url,其中一些可能需要 @login_required。其他方法集是辅助方法(如 get_top)。这些不会暴露给外界(因此不需要 @login_required)。

如果您必须在内部和外部都公开get_top,那么get_top 的第一个参数必须是request 对象,然后是其他对象参数。

关于python - Django: 'str' 对象没有属性 'user',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13423022/

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