我正在开发的应用需要为两种不同类型的用户提供单独的登录。我们需要让“客户”和“商家”都能进行注册。
对于“商家”,我只需要将布尔值
我已经使用了
有没有办法为不同的用户创建单独的注册视图?
我尝试了以下方法:
在urls.py文件中:
问题在于 is_business 布尔值从未设置为 True。 尽管表单显示可以保存,但保存的永远不是商家而总是客户。BusinessSignupForm 是 allauth 表单中 SignUpForm 的副本。 我做错了什么?
对于“商家”,我只需要将布尔值
user.is_business
设置为True
即可。我已经使用了
ACCOUNT_SIGNUP_FORM_CLASS
,并使用了一个单独的类来设置布尔值为真,这个方法非常有效。但是这样一来,客户端的登录就无法正常工作了。有没有办法为不同的用户创建单独的注册视图?
我尝试了以下方法:
class BusinessUserRegistrationView(FormView):
form_class = BusinessSignupForm
template_name = 'allauth/account/signup.html'
view_name = 'organisersignup'
success_url = reverse_lazy(view_name)
organisersignup = BusinessUserRegistrationView.as_view()
class BusinessSignupForm(BaseSignupForm):
password1 = SetPasswordField(label=_("Password"))
password2 = PasswordField(label=_("Password (again)"))
confirmation_key = forms.CharField(max_length=40,
required=False,
widget=forms.HiddenInput())
def __init__(self, *args, **kwargs):
super(BusinessSignupForm, self).__init__(*args, **kwargs)
if not app_settings.SIGNUP_PASSWORD_VERIFICATION:
del self.fields["password2"]
def clean(self):
super(BusinessSignupForm, self).clean()
if app_settings.SIGNUP_PASSWORD_VERIFICATION \
and "password1" in self.cleaned_data \
and "password2" in self.cleaned_data:
if self.cleaned_data["password1"] \
!= self.cleaned_data["password2"]:
raise forms.ValidationError(_("You must type the same password"
" each time."))
return self.cleaned_data
def save(self, request):
adapter = get_adapter()
user = adapter.new_user(request)
user.is_business = True
adapter.save_user(request, user, self)
self.custom_signup(request, user)
setup_user_email(request, user, [])
return user
在urls.py文件中:
url(r'^organiser/$', 'authentication.views.organisersignup', name='organisersignup'),
问题在于 is_business 布尔值从未设置为 True。 尽管表单显示可以保存,但保存的永远不是商家而总是客户。BusinessSignupForm 是 allauth 表单中 SignUpForm 的副本。 我做错了什么?