为什么我不能在装饰器内访问请求属性?

时间:2018-03-27 11:50:31

标签: python django django-views

我在提交表单时在我的Django装饰器(request.POST.get('...'))中使用@save_post_request,在每个试验中我得到同样的错误

request.<anything>错误)

  

AttributeError:&#39; collectData&#39;对象没有属性&#39; POST&#39;

我的装饰器在post() classBasedView内的CollectData函数之上调用。

#views.py
class collectData(View):
    template_name = 'collect_data.html'
    context = {...}

    def get(self, request, *args, **kwargs):
        ...
        return render(request, self.template_name, self.context)


    @save_post_request
    def post(self, request, *args, **kwargs):
        ...
        return redirect(reverse('collectData'))


#decorators.py
def save_post_request(function):
    def wrap(request, *args, **kwargs):

        title = request.POST.get('title') # <---
        ...
        return function(request, *args, **kwargs)
    wrap.__doc__ = function.__doc__
    wrap.__name__ = function.__name__
    return wrap

我不确定是否可以使用classBasedViews调用装饰器,但我认为它应该是正确的,我的错误是什么?

1 个答案:

答案 0 :(得分:3)

内部函数的第一个参数应该是[checked]="season === 'Winter'"

self