一尘不染

在Django中接受电子邮件地址作为用户名

django

在Django中无需滚动我自己的身份验证系统,有什么好方法吗?我希望用户名是用户的电子邮件地址,而不是他们创建用户名。


阅读 320

收藏
2020-03-28

共1个答案

一尘不染

这不是一个“完整”的解决方案,但可以满足你的大部分需求。

from django import forms
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        exclude = ('email',)
    username = forms.EmailField(max_length=64,
                                help_text="The person's email address.")
    def clean_email(self):
        email = self.cleaned_data['username']
        return email

class UserAdmin(UserAdmin):
    form = UserForm
    list_display = ('email', 'first_name', 'last_name', 'is_staff')
    list_filter = ('is_staff',)
    search_fields = ('email',)

admin.site.unregister(User)
admin.site.register(User, UserAdmin)
2020-03-28