<p>是的,这可以非常容易地完成首先创建一个身份验证后端:</p>
<p><strong>后端.py</strong></p>
<pre><code>from django.contrib.auth import get_user_model
class EmailAuthBackend(object):
"""
Email Authentication Backend
"""
def authenticate(self, username=None, password=None):
""" Authenticate a user based on email address as the user name. """
try:
user = get_user_model().objects.get(email=username)
if user.check_password(password):
return user
except get_user_model().DoesNotExist:
return None
</code></pre>
<p>然后在<strong>设置.py:</strong></p>
^{pr2}$
<p>最后确保您的表单具有电子邮件字段:</p>
<pre><code><form action="." method="post">
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}" />
{{ form.non_field_errors }}
{% for field in form %}
<div class="field-wrapper">
<div class="label-wrapper">
{% if field.name == "username" %}
Email address
{% else %}
{{ field.label_tag }}
{% endif %}
{% if field.field.required %}<span class="required">*</span>{% endif %}
</div>
<div class="value-wrapper">
{{ field }}
{{ field.errors }}
</div>
</div>
{% endfor %}
<div class="submit-wrapper">
<input type="submit" value="Sign In" />
</div>
</form>
</code></pre>