我使用的是Django + MongoDB。下面我附上了我的看法张贴我的数据在用户模型。
def register(request):
try:
if request.method == 'POST':
name = request.POST.get('name')
print(name)
email = request.POST.get('email')
print(email)
age = request.POST.get('age')
print(age)
qualification = request.POST.get('qualification')
print(qualification)
password = request.POST.get('password')
print(password)
hashed_password = make_password(password)
role = request.POST.get('role')
print(role)
if role == 'student':
is_student = True
is_instructor = False
if role == 'instructor':
is_instructor = True
is_student = False
user1 = User.objects.filter(email=email).first()
# print(user1)
if user1 is not None:
print(2)
message = "Email already in used."
messages.add_message(request, messages.INFO, message)
return render(request, 'signup.html')
user = User(email=email, name=name, age=age, qualification=qualification, password=hashed_password, is_student=is_student, is_instructor=is_instructor)
print(user)
user.save()
request.session['email'] = email
OTP_email(email)
return redirect('otp')
return render(request, 'signup.html')
在打印user时,我发现使用了多个print语句,它打印了None。我检查了是否是数据库的错误,可能用户模型没有定义,但我使用hasattr()方法检查了django shell,它返回True,所以有数据库模型名称User。现在我不明白为什么它打印None,而不是打印dict或List。
我尝试了多种方法来存储示例。
1条答案
按热度按时间uqjltbpv1#
在给定代码中输出None的原因是,当没有用户匹配电子邮件时,User.objects.filter(email=email)的first()方法返回None。
代码正在尝试搜索与给定电子邮件地址相对应的用户。filter(email=email)搜索具有指定电子邮件的用户。first()方法返回搜索结果中的第一个用户,如果没有匹配项,则返回None。
因此,如果user1变量不是None,这意味着已经有一个用户使用该电子邮件,它将打印“Email already in use.”并呈现signup.html模板。
如果user1为None,表示没有用户使用该电子邮件,则代码将创建User模型的新示例,将其保存到数据库,并相应地继续。