我正在构建一个应用程序,其中的身份验证过程具有三个字段。
每个子域定义一个隔离的空间,用户名仅在其子域内是唯一的
例如:
foo.bar.com
的用户jhon_doe
的密码为secret
。它可能存在另一个jhon_doe
,但在其他子域中。所以...我创建了一个自定义的后端身份验证,它运行良好。问题是默认情况下,登录Django Admin表单具有username
和password
字段。
我想使用subdomain
username
和password
字段来实现自定义Django Admin登录表单。
答案 0 :(得分:1)
我有一个类似的要求,我用以下方式做到了。看看它是否可以帮助您。
首先,我扩展了现有的用户模型,并在models.py中添加了电子邮件和电话。
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
email = models.EmailField(verbose_name='email',
max_length=255, unique=True)
phone = models.CharField(null=True, max_length=255)
REQUIRED_FIELDS = ['username', 'first_name', 'last_name']
USERNAME_FIELD = 'email'
def get_username(self):
return self.email
我已经创建了authapp
,并在我在authapp文件夹中创建的form.py
中添加了以下几行。
from django.views.generic import CreateView
from django.forms import CharField, ModelForm
from django.utils.translation import gettext_lazy as _
from authapp.models import User
class LoginForm(ModelForm):
class Meta:
model = User
fields = ('email', 'phone', 'password')
最后,在模板的.html文件中添加了此代码。请求有效负载中的表单名称为login_form
。
<form method="POST" action="/login/">
<div class="modal-body">{% csrf_token %} {{ login_form|crispy}}</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">
Close
</button>
<button type="submit" class="btn btn-primary">Login</button>
</div>
</form>
而我的登录表单的结果是
我想在这里澄清一下,如果您想更改现有的登录屏幕(这是Django的默认设置),则必须进行搜索,但在我的建议下,您应该使用自己的自定义方式。
谢谢您,祝您编程愉快...