![](/img/trans.png)
[英]I am using Python 3.9.4 and Django 3.2 and I made a function and a form that to check if the username or email already exists
[英]How can I give an error when someone edits there profile and changes the email to an email that already exists using django?
我想给出一个错误,即带有电子邮件的帐户已经存在,但是当用户在该帐户中编辑个人资料时,它似乎不起作用。 另外,如果在提交表单时电子邮件无效,则会产生值错误:“视图account.views.edit_profile没有返回HttpResponse对象。而是返回了None。”
这是代码:
{% extends 'base.html' %}
{% block head %}
<link href="\static\accounts\css\forms.css" rel="stylesheet">
{% endblock %}
{% block body %}
<h3 style="text-align: center">Edit profile</h3>
<form id="login-form" method="post">
{% csrf_token %}
<input placeholder="Email" id="id_email" name="email"
type="text" class="form-control" value="{{ user.email}}">
<input placeholder="First name" id="id_first_name" name="first_name"
type="text" class="form-control" value="{{ user.first_name}} ">
<input placeholder="Last name" id="id_last_name" name="last_name"
type="text" class="form-control" value="{{ user.last_name}}">
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<p class=" label label-danger">
<div style="text-align: center">
{{ error }}
</div>
</p>
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
<div class="alert alert-danger">
<strong>{{ error }}</strong>
</div>
{% endfor %}
{% endif %}
<div style="text-align:center;">
<button type="submit" class="btn btn-outline-dark centerbutton">Save edits</button>
</div>
</form>
{% endblock %}
另外,这是我用来检查注册表单中是否存在该电子邮件的代码,但似乎不适用于编辑配置文件表单:
def clean_email(self):
email = self.cleaned_data.get('email')
username = self.cleaned_data.get('username')
if email and User.objects.filter(email=email).exclude(username=username).exists():
raise forms.ValidationError(u'An account with this email address already exists')
return email
和我的editprofileform:
class EditProfileForm(UserChangeForm):
class Meta:
model = User
fields = (
'email',
'first_name',
'last_name',
'password'
)
这是一个太大的问题,无法在此处回答,我不会为您发布任何代码。 您将需要阅读一些文档并亲自进行操作。
检查电子邮件是否已经存在...您可能必须进入数据库或为此。 强制电子邮件列在数据库中是unique
,这是处理此问题的一种好方法。 您可以捕获数据库错误并根据需要进行处理。
至于有效的电子邮件验证,您将要使用Django的验证器。 验证器之一专门用于检查有效的电子邮件格式。
https://docs.djangoproject.com/zh-CN/2.2/ref/validators/#emailvalidator
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.