【发布时间】:2016-12-11 00:14:34
【问题描述】:
我是 django 的超级新手,遇到以下问题。
我的模型“用户”中有一些用户,其中包含电子邮件和用户名字段。我在 forms.py 中创建了一个 LoginFrom,它只接受一个电子邮件地址并检查它是否存在于用户数据库中。然后我想返回到我的 views.py 并检索该模型并使用它。
很简单,但是我做不到
return email_get
在我的 forms.py 中,因为它说用户已经存在。我可以返回 views.py 的唯一方法是更改我收到的表单电子邮件。
类似的,
email_got="found@gmail.com"
return email_got
那么,我怎样才能通过保留原始表单电子邮件返回到 forms.py。 Ps,我只是想手动检查数据库中是否存在用户。
这是我的forms.py
from django import forms
from .models import User
class LoginForm(forms.ModelForm):
class Meta:
model=User
fields= ['email']
def clean_email(self):
email_got = self.cleaned_data.get('email')
if User.objects.filter(email=email_got).exists():
raise forms.ValidationError("Your email already exist")
return email_got
还有我的观点.py
from django.conf import settings
from django.shortcuts import render
from django.core.mail import send_mail #for sending mail
from .forms import SignUpForm, LoginForm
from .models import User
def login(request):
username = None
form=LoginForm(request.POST or None)
if form.is_valid():
new_user = form.save()
username = getattr(new_user, 'username')
context = {
"form": form,
"username":username,
}
return render(request,"login.html",context)
非常感谢您的帮助!
【问题讨论】:
-
这是您的真实代码吗?
if User.objects.filter(email=emailAt).count() == 1:会抛出错误。但是话又说回来,您没有调用此代码所在的函数。那么你能发布你的真实代码吗? -
@e4c5 这很奇怪,我尝试时没有收到任何错误。我的 forms.py 中唯一缺少的是 SignUpForm 类。我没有给,因为我会造成不必要的分心
-
"你没有调用这段代码所在的函数"
标签: django django-forms django-views