Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';QuerySet';对象没有属性';电子邮件';_Python_Django_Django Rest Framework_Django Forms - Fatal编程技术网

Python ';QuerySet';对象没有属性';电子邮件';

Python ';QuerySet';对象没有属性';电子邮件';,python,django,django-rest-framework,django-forms,Python,Django,Django Rest Framework,Django Forms,我发现QuerySet对象没有属性“email”的错误。。4.我尽力想解决这个问题,但没能找到解决办法 from django.http import HttpResponse from loginsystem.models import newUser from django.contrib import messages from django.core.exceptions import MultipleObjectsReturned def login(request): i

我发现QuerySet对象没有属性“email”的错误。。4.我尽力想解决这个问题,但没能找到解决办法

from django.http import HttpResponse
from loginsystem.models import newUser
from django.contrib import messages
from django.core.exceptions import MultipleObjectsReturned

 def login(request):
    if request.method=='POST':
        try:
            userdetails=newUser.objects.filter(email=request.POST['email'] , password=request.POST['password'])
            print("username=", userdetails)
            request.session['email']=userdetails.email
            return render(request, 'home.html')
谢谢在您的用户详细信息中添加
.first()

userdetails=newUser.objects.filter(email=request.POST['email'] , password=request.POST['password']).first()
过滤器为return
QuerySet[]
get\u object\u或_404
是返回实例,因此您必须使用
.first()
QuerySet[]
中获取用户,或者使用
get\u object\u或_404

使用“get”而不是“filter”。

过滤器:返回多个对象。 获取:返回单个对象。您正在使用userdetails.email访问电子邮件,因此,userdetails必须是单个对象

 def login(request):
    if request.method=='POST':
        try:
            userdetails=newUser.objects.get(email=request.POST['email'] , password=request.POST['password'])
            print("username=", userdetails)
            request.session['email']=userdetails.email
            return render(request, 'home.html')

filter方法返回一个列表(即Queryset),而不是您想要的唯一值。您应该改用get方法

userdetails=newUser.objects.get(email=request.POST['email'] , password=request.POST['password'])

注意:获取非唯一查询,即多个对象将引发
MultipleObjectsReturned
异常。确保获取索引对象。 如果不确定对象是否唯一,请执行以下操作:

userdetails=newUser.objects.filter(email=request.POST['email'] , password=request.POST['password'])
if userdetails.exists():
    userdetails = userdetails[0]

请解释原因@明。。。谢谢,先生,它起作用了……请解释原因!过滤器:返回多个对象。get:返回单个对象。您正在使用userdetails.email访问电子邮件,因此,userdetails必须是单个对象。谢谢。你能把这个加在你的答案上吗。如果你这样做,我将投票表决:-)编辑Explanation@ShaidHasanShawon先生,我使用
.get
而不是
.filter
,但是它显示了在/login处返回的多个对象。请添加一些关于使用get的多个对象的情况!谢谢,先生。。。。。
userdetails=newUser.objects.filter(email=request.POST['email'] , password=request.POST['password'])
if userdetails.exists():
    userdetails = userdetails[0]