django - django,添加密码以限制谁可以在我的网站上注册
问题描述
我有一个注册页面,我想限制谁可以注册到我的网站。
视图.py:
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
passcode = PassCodeForm(request.POST)
if form.is_valid():
passcode == "FreedomLivesHere"
if passcode == 'passcode':
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}!')
return redirect('login')
else:
messages.error(request, f'Passcode incorrect, please try again!')
else:
messages.error(request, f'Oops I did it again! Please try again later.')
return redirect('register')
else:
form = UserRegisterForm()
passcode = PassCodeForm()
context = {
'passcode':passcode,
'form':form
}
return render(request, 'users/register.html', context)
表格.py
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
class PassCodeForm(forms.ModelForm):
class Meta:
model = Passcode
fields = ['passcode']
当我运行我的注册页面时,我得到了 else 语句:'哎呀,我又做了一次!请稍后再试。'),添加与字符串匹配的密码字段的最佳方法是什么。此外,取决于密码字符串。它将创建活动、管理员或员工权限类型。这可能吗?
解决方案
您会收到错误Oops I did it again! please try again later
,因为您在同一个 url 上有两个表单操作。所以一种形式总是无效的。您不能按时发送多个表格。添加字段密码以形成 UserRegisterForm 并创建将检查输入密码的验证器。
https://docs.djangoproject.com/en/3.1/ref/forms/validation/#cleaning-a-specific-field-attribute
推荐阅读
- c++ - C++文件io多行
- sql - 仅通过 SQL 显示在 DBGrid 中的 TCheckListBox 中选择的字段
- vaadin - 在 Tomcat 容器上运行时,聚合物资源 URL 在“上下文”下不起作用
- javascript - 使用javascript/jquery根据另一个选择的值显示/隐藏选择选项?
- html - 禁用时阻止锚点像超链接一样
- java - 如何以正确的顺序销毁 bean(使用会话和单例范围)?
- vue.js - 检查对象是否存在而不抛出错误
- sql - Redshift 数值精度截断
- sybase - 阻止智能感知更改我的表格别名
- php - 如何递归地将键添加到数组中