必须使用 UserLoginForm 实例作为第一个参数调用未绑定的方法 is_valid() (什么都没有)

约瑟夫·大卫

大家好,任何有想法的人都可以帮助解决这个错误,我正在使用 Django 框架来开发一个使用基于类的视图的简单应用程序。

这是我的查看代码:

class OpenLogin(FormView):
    template_name = 'signin.html'
    form_class = UserLoginForm

    def post(self, request, *args, **kwargs):
        form = self.form_class
        next_url = self.request.GET.get('next')
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')

            obj = authenticate(username=username, password=password)
            if obj is not None:
                if obj.is_active():
                    login(self.request, obj)
                    if next_url is not None:
                        return HttpResponseRedirect(next_url)
                    else:
                        return HttpResponseRedirect(reverse('index'))
                else:
                    messages.error(self.request, 'Error! sorry account is not active')
                    return HttpResponseRedirect(reverse('signin'))
            else:
                messages.error(self.request, 'Error!, sorry account is not found')
                return HttpResponseRedirect(reverse('signin'))
        else:
            messages.error(self.request, 'Sorry! an error occurred, try again')
            context = {
                'title': 'Sign In',
                'next_url': next_url,
                'messages': messages.get_messages(self.request),
                'user': self.request.user,
                'form':form,
            }

            return context

这是我的表单类:

class UserLoginForm(forms.Form):
    username = forms.CharField(max_length=User._meta.get_field('email').max_length)
    password = forms.CharField(min_length=6, max_length=16, widget=forms.PasswordInput())

    def is_valid(self):
        valid = super(UserLoginForm, self).is_valid()
        if not valid:
            return valid
        try:
            user = User.objects.get(
                Q(username=self.cleaned_data['username']) | Q(email=self.cleaned_data['username'])
            )
        except User.DoesNotExist:
            self._errors['no_user'] = 'User does not exist'
            return False
        if not check_password(self.cleaned_data['password'], user.password):
            self._errors['invalid_password'] = 'Password is invalid'
            return False
        return True

提交表单后,我最终出现以下错误:

unbound method is_valid() must be called with UserLoginForm instance as first argument (got nothing instead)

我的错误在哪里?帮忙

彼得·德格洛珀

您在这里有几个问题,但这是导致您立即出错的问题:

 form = self.form_class
 ...
 if form.is_valid():

self.form_class是对类的引用,而不是表单实例。您应该根据您的请求构建一个表单实例,并验证:

form = self.form_class(request.POST)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

类型错误:必须使用 Link 实例作为第一个参数调用未绑定的方法 set_rank()(什么都没有)

来自分类Dev

必须使用 Tk 实例作为第一个参数调用未绑定的方法 mainloop()(什么都没有)

来自分类Dev

必须以WorkoutList实例作为第一个参数来调用未绑定方法get_queryset()(而是什么也不做)

来自分类Dev

必须以实例作为第一个参数来调用未绑定方法(代之以无用)

来自分类Dev

必须以实例作为第一个参数调用未绑定方法-python

来自分类Dev

未绑定的方法必须以实例作为第一个参数来调用

来自分类Dev

TypeError:未绑定的方法Date()必须以DateTime实例作为第一个参数调用(改为使用int实例)

来自分类Dev

如何修复TypeError:必须使用Dropper实例作为第一个参数来调用未绑定方法

来自分类Dev

未绑定的方法equaldigits()必须以sut实例作为第一个参数来调用(取而代之的是int实例)

来自分类Dev

在Spyder上使用Altair时,为什么我的两个图形都没有显示?

来自分类Dev

错误:必须使用“类名”实例作为第一个参数来调用未绑定方法“方法名”(取而代之的是classobj实例)

来自分类Dev

必须使用GetPostView实例作为第一个参数来调用未绑定的方法comment()(改为使用WSGIRequest实例)

来自分类Dev

必须使用GetPostView实例作为第一个参数来调用未绑定的方法comment()(改为使用WSGIRequest实例)

来自分类Dev

类型错误:必须使用 Vars 实例作为第一个参数调用未绑定的方法 SendVars()(改为使用 bool 实例)

来自分类Dev

Python 错误:必须使用 Point 实例作为第一个参数调用未绑定的方法 distance()(改为使用 classobj 实例)

来自分类Dev

Laravel-2个查询什么都没有?

来自分类Dev

TypeError:未绑定方法“方法名称”必须以“类名称”实例作为第一个参数来调用(取而代之的是str实例)

来自分类Dev

TypeError:未绑定方法move_to_element()必须以ActionChains实例作为第一个参数来调用(取而代之的是获取列表实例)

来自分类Dev

点斜杠vs什么都没有。有什么区别,什么更好使用?

来自分类Dev

为什么每次运行一个命令时位置变量都没有改变

来自分类Dev

除了一个复选框,屏幕上什么都没有显示

来自分类Dev

为什么每次运行一个命令时位置变量都没有改变

来自分类Dev

一个mysql请求,什么都没有发生?

来自分类Dev

使用Powermail(前端)在Typo3中什么都没有出现

来自分类Dev

为什么这个SQL使用工会都没有返回任何数据

来自分类Dev

xdebug未安装在xamp中。phpinfo中什么都没有

来自分类Dev

为什么两个标签都没有更新?

来自分类Dev

正则表达式为“后跟一组字符或什么都没有”

来自分类Dev

正则表达式为“后跟一组字符或什么都没有”

Related 相关文章

  1. 1

    类型错误:必须使用 Link 实例作为第一个参数调用未绑定的方法 set_rank()(什么都没有)

  2. 2

    必须使用 Tk 实例作为第一个参数调用未绑定的方法 mainloop()(什么都没有)

  3. 3

    必须以WorkoutList实例作为第一个参数来调用未绑定方法get_queryset()(而是什么也不做)

  4. 4

    必须以实例作为第一个参数来调用未绑定方法(代之以无用)

  5. 5

    必须以实例作为第一个参数调用未绑定方法-python

  6. 6

    未绑定的方法必须以实例作为第一个参数来调用

  7. 7

    TypeError:未绑定的方法Date()必须以DateTime实例作为第一个参数调用(改为使用int实例)

  8. 8

    如何修复TypeError:必须使用Dropper实例作为第一个参数来调用未绑定方法

  9. 9

    未绑定的方法equaldigits()必须以sut实例作为第一个参数来调用(取而代之的是int实例)

  10. 10

    在Spyder上使用Altair时,为什么我的两个图形都没有显示?

  11. 11

    错误:必须使用“类名”实例作为第一个参数来调用未绑定方法“方法名”(取而代之的是classobj实例)

  12. 12

    必须使用GetPostView实例作为第一个参数来调用未绑定的方法comment()(改为使用WSGIRequest实例)

  13. 13

    必须使用GetPostView实例作为第一个参数来调用未绑定的方法comment()(改为使用WSGIRequest实例)

  14. 14

    类型错误:必须使用 Vars 实例作为第一个参数调用未绑定的方法 SendVars()(改为使用 bool 实例)

  15. 15

    Python 错误:必须使用 Point 实例作为第一个参数调用未绑定的方法 distance()(改为使用 classobj 实例)

  16. 16

    Laravel-2个查询什么都没有?

  17. 17

    TypeError:未绑定方法“方法名称”必须以“类名称”实例作为第一个参数来调用(取而代之的是str实例)

  18. 18

    TypeError:未绑定方法move_to_element()必须以ActionChains实例作为第一个参数来调用(取而代之的是获取列表实例)

  19. 19

    点斜杠vs什么都没有。有什么区别,什么更好使用?

  20. 20

    为什么每次运行一个命令时位置变量都没有改变

  21. 21

    除了一个复选框,屏幕上什么都没有显示

  22. 22

    为什么每次运行一个命令时位置变量都没有改变

  23. 23

    一个mysql请求,什么都没有发生?

  24. 24

    使用Powermail(前端)在Typo3中什么都没有出现

  25. 25

    为什么这个SQL使用工会都没有返回任何数据

  26. 26

    xdebug未安装在xamp中。phpinfo中什么都没有

  27. 27

    为什么两个标签都没有更新?

  28. 28

    正则表达式为“后跟一组字符或什么都没有”

  29. 29

    正则表达式为“后跟一组字符或什么都没有”

热门标签

归档