![](/img/trans.png)
[英]Django User Model AttributeError: 'str' object has no attribute 'objects'
[英]Django: 'str' object has no attribute 'user'
这是我的视图代码:
@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' object has no attribute 'user'
在“ get_top(“ ff”)”处'str' object has no attribute 'user'
”
请删除get_top
方法的@login_required
装饰器。
这是要执行的操作, @login_required
尝试验证该用户是否已登录。 这试图在ff
找到一个User
对象实例,该实例是str
因此是stacktrace。 通常, @login_required
从request
obj获取User
,但是由于您没有在get_top
传递该用户,因此出现错误。
我的建议是,您应该在views.py
维护一组特定的方法,这些方法链接到urls.py
的API url,其中一些可能需要@login_required
。 其他方法集是辅助方法(如get_top
)。 这些不会暴露给外界(因此不需要@login_required
)。
如果必须在内部和外部公开get_top
,则get_top
的第一个参数必须是request
对象,然后是其他参数。
get_top不会返回HttpResponse,因此Django无法正确应用@login_required装饰器(假设它返回了具有.user属性的HttpResponse)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.