向Django管理员身份验证表单添加自定义字段
我正在构建一个应用程序,其中auth进程有三个字段向Django管理员身份验证表单添加自定义字段,django,django-forms,django-views,django-admin,Django,Django Forms,Django Views,Django Admin,我正在构建一个应用程序,其中auth进程有三个字段 子域 用户名 密码 每个子域定义一个独立的空间,用户名仅在其子域内是唯一的 例如: 子域foo.bar.com拥有用户jhon_doe和密码secret。它可能存在另一个jhon_doe,但在其他子域中 所以。。。我已经创建了一个自定义的后端身份验证,它工作得很好。问题是登录Django管理表单默认有用户名和密码字段 我想用子域用户名和密码字段实现一个自定义Django管理员登录表单。我有一个类似的要求,我用以下方式实现了这一点。看看它是否
- 子域
拥有用户foo.bar.com
和密码jhon_doe
。它可能存在另一个secret
,但在其他子域中jhon_doe
用户名
和密码
字段
我想用
子域
用户名和密码
字段实现一个自定义Django管理员登录表单。我有一个类似的要求,我用以下方式实现了这一点。看看它是否能帮助你
首先,我扩展了现有的用户模型,并在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\u 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>
{%csrf_token%}{{login_form|crispy}}
接近
登录
我登录表单的结果是
我想在此澄清一下,如果你想改变Django默认的现有登录屏幕,那么你必须搜索arround,但我建议你应该实现自己的定制方式
谢谢您,祝您编码愉快……您好。请提供forms.py中的注册类。我需要添加其他字段,但不知道如何添加。谢谢您好,您在哪里注册了登录表单?登录表单是上下文中LoginForm()的对象@nassim@DmytroManzhula类RegisterForm(ModelForm):password=CharField(widget=PasswordInput())类Meta:model=User字段=(“电子邮件”、“电话”、“密码”)