小编Maa*_*ack的帖子

如何将参数传递给Django的PasswordChangeForm的__init__函数

我在尝试访问Django中的PasswordChangeView时遇到TypeError.错误是:

Django Version: 1.7.3
Exception Type: TypeError
Exception Value:    
__init__() missing 1 required positional argument: 'user'
Exception Location: /usr/local/lib/python3.4/dist-packages/django/views/generic/edit.py in get_form, line 45
Python Executable:  /usr/bin/python3.4
Run Code Online (Sandbox Code Playgroud)

我无法找到从https://docs.djangoproject.com/en/1.7/_modules/django/contrib/auth/forms/#PasswordChangeForm加载提供的PasswordChangeForm的FormView示例

这就是我尝试这样做的方法,但即使经过一些调整,我仍然遇到错误.

urls.py

url(r'^password/change/$', login_required(views.PasswordChangeView.as_view()), name='change_password'),
Run Code Online (Sandbox Code Playgroud)

views.py

class PasswordChangeView(FormView):
    template_name = 'change_password.html'
    form_class = PasswordChangeForm

    def dispatch(self, request, *args, **kwargs):
        try:
            self.initial['user'] = self.request.user
        except AttributeError:
            raise Http404

        return super(PasswordChangeView, self).dispatch(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我不确定为什么我仍然会收到此错误.如果我查看使用FormView扩展的FormMixin,我会看到以下内容:

def get_form(self, form_class):
    """
    Returns an instance of the form to be used in this view.
    """
    return …
Run Code Online (Sandbox Code Playgroud)

python django django-forms django-views python-3.x

2
推荐指数
1
解决办法
1070
查看次数

标签 统计

django ×1

django-forms ×1

django-views ×1

python ×1

python-3.x ×1