2014-03-07 31 views
1

我使用Django自定義用戶模型。一切都在管理工作正常 - 登錄,註銷等。然而,當我試圖從我自己的view.py調用login:Asse田在/登錄/ sensitive_post_parameters沒有收到一個HttpRequest,在登錄

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 "sensitive_post_parameters didn't receive an HttpRequest" on add users in admin

謝謝

+1

難道說你是不是在CSRF令牌發送,這使得對Django的登錄視圖返回None,而不是要求CSRF裝飾進一步向下傳遞到'sensitive_post_parameters'裝飾? –

+0

我確實發送了它。另一個實驗地停止使用@csrf_exempt CSRF,卻沒有任何變化,仍然在登錄 – user3193043

回答

0

替代方法。我不是Django的專家,很可能這不是最健康的解決方案,但是挖掘登錄登錄過程中,我碰到了這個聲明 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 
+0

得到同樣的錯誤DEF不要去:)你應該嘗試使這個問題Django的人更明顯的方式。或者你可以把一個快速的要點複製它,也許有人會採取刺傷它與調試器。 –