我制作了一个自定义用户模型。注册和注销工作正常。但我已经使用该模型制作了一个登录表单。我的型号是usersignupmodel。但无论何时在注册后,如果我尝试登录,它都会给我一个类似于用户注册模型的错误,该电子邮件已经存在
我找不到问题,请帮助。
模型。派克
from django.db import models
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
class SignUpManager(BaseUserManager):
def create_user(self, email,age,name, username, password=None):
#if not email:
#raise ValueError("insert user")
if not username:
raise ValueError("insert username")
if not name:
raise ValueError("insert name")
if not age:
raise ValueError("insert age")
user = self.model(
email=self.normalize_email(email),
username=username,
age=age,
name=name,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self,email,name,age,username, password):
user = self.create_user(
email=self.normalize_email(email),
username=username,
password=password,
age=age,
name=name,
)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
class UserSignupModel(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=60,unique=True)
age = models.CharField(max_length=15)
name = models.CharField(max_length=15)
username = models.CharField(max_length=15, unique=True)
date_joined = models.DateTimeField(verbose_name="date joined", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="last login", auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = "username"
REQUIRED_FIELDS = ['email','name','age']
objects = SignUpManager()
def __str__(self):
return self.name
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True
#migrate --run-syncdb in case no work
形式。派克
from django import forms
from django.contrib.auth.forms import UserCreationForm
from diabetes.models import UserSignupModel
from django.contrib.auth import login,authenticate,logout
class UserSignupForm(UserCreationForm):
email=forms.EmailField(max_length=60,help_text="add a valid email address",required=True)
name=forms.CharField(max_length=15,help_text="add a valid name")
age=forms.CharField(max_length=15)
class Meta:
model=UserSignupModel
fields=('email','name',"username",'age',"password1","password2")
class UserLoginForm(forms.ModelForm):
password=forms.CharField(label="password",widget=forms.PasswordInput)
class Meta:
model=UserSignupModel
fields=("email","password")
def clean(self):
if self.is_valid():
email=self.cleaned_data['email']
password=self.cleaned_data['password']
if not authenticate(email=email,password=password):
raise forms.ValidationError("Invalid LOGIN")
意见。派克
from django.shortcuts import render,redirect
from django.contrib.auth import login,authenticate,logout
from diabetes.forms import UserSignupForm,UserLoginForm
def home(request):
return render(request,'diabetes/home.html')
def signupuser(request):
context={}
if request.POST:
form=UserSignupForm(request.POST)
if form.is_valid():
form.save()
email=form.cleaned_data.get('email')
raw_password=form.cleaned_data.get('password1')
name=form.cleaned_data.get('name')
age=form.cleaned_data.get('age')
username=form.cleaned_data.get('username')
帐户=验证(电子邮件=电子邮件,密码=raw_password,名称=姓名,年龄=年龄,用户名=用户名)登录(请求,帐户)返回重定向('home')其他:上下文["reg_form"]=表单
else:
form = UserSignupForm()
context["reg_form"] = form
return render (request,'diabetes/signupuser.html',context)
def logoutuser(request):
logout(request)
return redirect('home')
def loginuser(request):
context={}
user=request.user
if user.is_authenticated:
return redirect('home')
if request.method=="POST":
form=UserLoginForm(request.POST)
if form.is_valid():
password=request.POST["password"]
email=request.POST["email"]
user=authenticate(password=password,email=email)
if user:
login(request,user,)
return redirect("home")
else:
form=UserLoginForm()
context['form']=form
return render(request,"diabetes/loginuser.html",context)
登录用户。html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="POST">
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}
{{ field}}
{% if field.help_text %}
<small>{{ field.help_text }}</small>
{% endif %}
{% for field in form %}
{% for error in field.errors %}
<strong>{{ error }}</strong>
{% endfor %}
{% endfor %}
{% if form.non_field_errors %}
<small>{{ form.non_field_errors}}</small>
{% endif %}
</p>
{% endfor %}
<input type="submit">SUBMIT</input>
</form>
</body>
</html>
您可以尝试删除以下行:
form=UserLoginForm(request.POST)
if form.is_valid():
您使用相同的模型定义了登录和注册,因此有效
在注册后应失败。表单验证模型以创建新实例,这就是您出现此错误的原因。
问题内容: 我的网站已设置为没有用户名(或者说user.username = user.email)。如果用户尝试输入数据库中已经存在的用户名,则Django会显示一条错误消息,但是由于我没有使用用户名进行注册,所以我不知道该怎么做。 就像已经有默认设置一样,我不想重新加载页面以查找是否已经有与用户关联的电子邮件地址。我的猜测是使用Ajax,但我不知道该怎么做。Ive看过其他帖子,但最近似乎没有任
问题内容: 我编写了一个向新闻稿库添加电子邮件的功能。直到我添加了已发送电子邮件的有效性检查,它都可以正常工作。现在,每次我得到“错误的电子邮件”作为回报。有人可以在这里看到任何错误吗?使用的正则表达式为: 并且它是100%有效的(http://gskinner.com/RegExr/),但是我可能使用它是错误的,或者它可能是一些逻辑错误: 问题答案: 这是的一部分,你可能会觉得很有趣:) 因此,
我试图从我的应用程序发送电子邮件,我在android上的电子邮件客户端中看到了应有的链接,但当我检查电子邮件接收器时,没有链接。 这是我的代码: “文本”是html。 谢谢你。
问题内容: 但是我已经尝试了一天多了,以获取与Django一起使用的电子邮件。 我收到此错误消息:当我尝试发送电子邮件时 这是我创建电子邮件并尝试在其视图中发送的地方: 我的设置文件如下: 我尝试过使用进行测试发送python -m smtpd -n -c DebuggingServer localhost:1025并获得了成功,但是当最终归结为真正却没有成功时。 当我尝试从外壳执行send_ma
我需要在我的应用程序中集成邮件服务。我的应用程序应该发送电子邮件,其中必须附上。pdf文件(详细报告)。PDF文件现在位于远程服务器上。 有人能帮我理解如何在黑莓手机上发送带有pdf附件的邮件吗?如果实施是可行的,那么我将如何实施? 以下是我从Blackberry知识库论坛获得的用Blackberry发送邮件的链接 如何-创建附件 如何创建和发送消息
问题内容: 问题答案: $config = Array( ‘protocol’ => ‘smtp’, ‘smtp_host’ => 'ssl://smtp.googlemail.com’, ‘smtp_port’ => 465, ‘smtp_user’ => ‘xxx’, ‘smtp_pass’ => ‘xxx’, ‘mailtype’ => ‘html’, ‘charset’ => ‘iso-8