Django View & Form Inheritance



我正在尝试更改自定义用户auth-django项目的密码更改表单。我遇到了一个小问题。也许我太累了,也许我错了或者误解了事情,这就是我寻求帮助的原因。我知道这么小的事情似乎需要做很多工作,但我正在尝试创建一个"罐装"身份验证应用程序。我解决这个特殊问题的目标只是将样式应用于PasswordChangeForm(SetPasswordForm)类,而不需要非本地包的帮助\依赖性。我的思维过程错了吗?url调用一个从auth视图继承的视图,该视图指向一个从字段值已更改的auth表单继承的表单。提前谢谢。

urls.py

from .views import ChangePasswordView
from django.contrib.auth.views import (
PasswordChangeDoneView,
)

urlpatterns = [
path('change_password/',
ChangePasswordView,
name='password_change'),
]

视图.py

from django.contrib.auth.decorators import login_required
from django.contrib.auth.views import PasswordChangeView
from .forms import ChangePasswordForm
@login_required
class ChangePasswordView(PasswordChangeView):
template_name='account/change_password_form.html'
form_class = ChangePasswordForm

表单.py

from django import forms
from django.utils.translation import gettext, gettext_lazy as _
from django.contrib.auth.forms import (
PasswordChangeForm,
SetPasswordForm,
)
class ChangePasswordForm(PasswordChangeForm):
template_name='account/change_password_form.html'
old_password = forms.CharField(
label=_("Old password"),
strip=False,
widget=forms.PasswordInput(attrs={'autofocus': True, 'placeholder': 'Password',
'class': 'form-control', 'required': 'true'}),
)
new_password1 = forms.CharField(
label=_("New Password"),
strip=False,
widget=forms.PasswordInput(attrs={'placeholder': 'Password',
'class': 'form-control', 'required': 'true'}),
)
new_password2 = forms.CharField(
label=_("Confirm Password"),
strip=False,
widget=forms.PasswordInput(attrs={'placeholder': 'Password',
'class': 'form-control', 'required': 'true'}),

错误

/account/change_password处的类型错误/init()接受1个位置参数,但2个已给定

总是小事。。。

urlpatterns = [
path('change_password/',
ChangePasswordView,
name='password_change'),
]

应该是

urlpatterns = [
path('change_password/',
ChangePasswordView.as_view(),
name='password_change'),
]

太晚了!你累了!让它工作起来,然后睡一觉。:-)

最新更新