我和Django斗争了几天,最不愉快的是在网上很难找到答案。我正在练习登录/注册表单和身份验证。首先,我有自己的登录和注册表单,但当我发现Django有自己的内置登录系统时,我尝试使用了一个,但问题是login
是整个视图,它忽略了我的注册表单。所以,它必须看起来像一个块,我可以切换到登录或注册,这取决于我的需要,但唯一的登录形式出现。我正在寻找的解决方案,使我能够结合在一个页面上的两种形式。你知道吗
网址.py:
urlpatterns = [
url(r'^admin/', admin.site.urls),
path('', login, {'template_name':'index.html'}),
path('accounts/', views.account)]
表单.py:
class login_form(forms.Form):
email = forms.EmailField(widget=forms.EmailInput(
attrs={
'class':'form-control',
'placeholder':'Enter email',
}
))
password = forms.CharField(widget=forms.PasswordInput(
attrs={
'class':'form-control',
'placeholder':'Enter password',
}
) )
class register_form(UserCreationForm):
username = forms.CharField(required=False, widget=forms.HiddenInput())
email = forms.EmailField(required=True, widget=forms.EmailInput(
attrs={
'class':'form-control',
'placeholder':'Enter email'
}
))
password1 = forms.CharField(required=True, widget=forms.PasswordInput(
attrs={
'class':'form-control',
'placeholder':'Enter password'
}
))
password2 = forms.CharField(required=True, widget=forms.PasswordInput(
attrs={
'class': 'form-control',
'placeholder': 'Confirm password'
}
))
class Meta:
model = User
fields = (
'username',
'email',
'password1',
'password2'
)
def save(self, commit=True):
user = super(register_form, self).save(commit=False)
user.email = self.cleaned_data['email']
user.username = user.email
user.password1 = self.cleaned_data['password1']
user.password1 = self.cleaned_data['password2']
if commit:
user.save()
return user
因此,您可以在页面中使用两个窗体创建视图
然后在模板中:
在你的JS代码中隐藏或显示其中一个取决于你想要什么。你知道吗
相关问题 更多 >
编程相关推荐