首页 > 解决方案 > 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 语句:'哎呀,我又做了一次!请稍后再试。'),添加与字符串匹配的密码字段的最佳方法是什么。此外,取决于密码字符串。它将创建活动、管理员或员工权限类型。这可能吗?

标签: djangodjango-modelsdjango-formsdjango-viewsdjango-templates

解决方案


您会收到错误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


推荐阅读