Django:classview缺少属性COOKIE

2024-10-01 09:25:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在玩休息和主干网.js遇到了这个问题:

'LoginView' object has no attribute 'COOKIES'

下面是可能导致问题的以下代码。我在javascript中注释了一些内容,因为我希望它直接加载到服务器上,但是我认为把它带来也一样好。在

我还可以补充,我已经检查了表格中的csrf令牌,它就在那里。在

在视图.py在

^{pr2}$

在登录.js在

var csrftoken = $('meta[name="csrf-token"]').attr('content');
SigninView = Backbone.View.extend({
    events: {
        //"click button[type=submit]": "sendRequest"
    },
    sendRequest: function( event ){
        //event.preventDefault();
        var csrftoken = $.cookie('csrftoken');
        var url = '/login/validate/';
        var email = $("#id_email").val();
        var password = $("#id_password").val();
        var items = {
                        email: email,
                        password: password,
                        csrfmiddlewaretoken: csrftoken
                    };      
        console.log(csrftoken);
        $.ajax({
            url:url,
            type:'POST',
            dataType:"json",
            data: items,
            success: function (data) {  
                var json = $.parseJSON(data);
                console.log(data);
            },
            error: function (xhr, textStatus, error) {
                $("#form_error").css('padding','7px').css('border-radius','4px').html('Error recieved: ' + error).fadeIn();
                console.log("Status: "+textStatus);
                console.log("Type: "+error);
            }
        });
    }
});
var signin_view = new SigninView({
    el: $("#login_form")
}); 

我们是两个在这方面工作的人,我自己承担了Python的工作,而我的朋友负责js部分。我还没有足够的Django经验来真正找出是什么导致了cookies导致的错误。大多数时候,如果可以的话,我尽量远离饼干,但在这里似乎很困难。在

当然还有:回溯:

Traceback:
File "/home/ryuu/Programming/Python/tabr/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/ryuu/Programming/Python/tabr/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
  69.             return self.dispatch(request, *args, **kwargs)
File "/home/ryuu/Programming/Python/tabr/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
  87.         return handler(request, *args, **kwargs)
File "/home/ryuu/Programming/Python/tabr/venv/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
  29.             return bound_func(*args, **kwargs)
File "/home/ryuu/Programming/Python/tabr/venv/local/lib/python2.7/site-packages/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper
  75.             return view(request, *args, **kwargs)
File "/home/ryuu/Programming/Python/tabr/venv/local/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
  25.                 return func(self, *args2, **kwargs2)
File "/home/ryuu/Programming/Python/tabr/venv/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  95.                     result = middleware.process_view(request, view_func, args, kwargs)
File "/home/ryuu/Programming/Python/tabr/venv/local/lib/python2.7/site-packages/django/middleware/csrf.py" in process_view
  111.                 request.COOKIES[settings.CSRF_COOKIE_NAME])

Exception Type: AttributeError at /login/validate/
Exception Value: 'LoginView' object has no attribute 'COOKIES'

Tags: djangoinpyviewhomevenvvarlib
1条回答
网友
1楼 · 发布于 2024-10-01 09:25:51

您在方法上使用了函数装饰器。在

这行不通:decorator返回的函数期望它的第一个参数是request,而接收的却是self。在

使用:

from django.utils.decorators import method_decorator

csrf_protected_method = method_decorator(csrf_protect)
# and so on

有关详细信息,请查看the documentation。在

相关问题 更多 >