断言错误在 /login/ sensitive_post_parameters没有收到 HttpRequest,登录时



我使用django自定义用户模型。一切正常在管理中工作 - 登录,注销等。但是,当我尝试从我自己的View.py拨打登录时:

def my_login(request, *args, **kwargs):
    response = login(request, *args, **kwargs)
    return response

我有以下错误:

AssertionError at /cust/login/
sensitive_post_parameters didn't receive an HttpRequest. If you are decorating a classmethod, be sure to use @method_decorator.
Request Method: POST
Request URL: http://localhost:8000/cust/login/
Django Version: 1.6.1
Python Version: 2.7.3
Traceback:
File "virtual_env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "virtual_env/local/lib/python2.7/site-packages/django/views/generic/base.py" in view 69. return self.dispatch(request, *args, **kwargs)
File "virtual_env/local/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view 57.    return view_func(*args, **kwargs)
File "virtual_env/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch 399.response = self.handle_exception(exc)
File "virtual_env/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch 396.response = handler(request, *args, **kwargs)
File "virtual_env/local/lib/python2.7/site-packages/rest_framework/decorators.py" in handler 49.return func(*args, **kwargs)
File "virtual_env/myproject/myidentity/views.py" in my_login 13.response = login(request, *args, **kwargs)
File "virtual_env/local/lib/python2.7/site-packages/django/views/decorators/debug.py"in sensitive_post_parameters_wrapper 68."sensitive_post_parameters didn't receive an HttpRequest. If you "
Exception Type: AssertionError at /cust/login/
Exception Value: sensitive_post_parameters didn't receive an HttpRequest. If you are decorating a classmethod, be sure to use @method_decorator.
Request information:
GET: No GET data

除了以下问题之外,没有发现太多参考:django assertionError和" sensivitive_post_parameters"没有收到httprequest'在admin

中添加用户

谢谢

workaround 。我不是Django专家,很可能这不是最健康的解决方案,但是挖掘登录过程我遇到了这个 servertion 命令Django站点包装,它阻止了它下面的代码,这看起来很合理,在评论断言后,它可以正常工作。

virtual_env > lib > python2.7 > site-packages > django > views > decorators > debug.py
def decorator(view):
        @functools.wraps(view)
        def sensitive_post_parameters_wrapper(request, *args, **kwargs):
            '''
            assert isinstance(request, HttpRequest), (
              "sensitive_post_parameters didn't receive an HttpRequest. If you "
              "are decorating a classmethod, be sure to use @method_decorator."
            )
            '''
            if parameters:
                request.sensitive_post_parameters = parameters
            else:
                request.sensitive_post_parameters = '__ALL__'
            return view(request, *args, **kwargs)
        return sensitive_post_parameters_wrapper
    return decorator

最新更新