【问题标题】:how to dispatch a specific method with csrf_exempt in django class based view如何在基于 django 类的视图中使用 csrf_exempt 调度特定方法
【发布时间】:2018-08-21 14:45:30
【问题描述】:

我正在尝试在 Django 中在基于类的视图上设置 csrf_exempt 我已经尝试过这个:

现在,我的班级是这样的:

class UserView(View):

   # Check csrf here  
   def get(self, request, pk):
      #code here

   # I want to exempt csrf checking only on this method 
   def post(self, request):
       #code here

同时,如果我使用@method_decorator(csrf_exempt, name='dispatch'),它将应用于类中的每个方法。在 Django 的基于类的视图中,仅对特定方法进行豁免的最佳方法是什么?

【问题讨论】:

  • CSRF 仅在 POST 的上下文中才有意义。它不是在 GET 上强制执行的。
  • @DanielRoseman crsf 也适用于 PUT、DELETE 等
  • @HenryM 我只想将csrf_exempt 应用于特定方法。例如只发给put 或只发给post

标签: python django view csrf


【解决方案1】:

您不能只使用post()/put(),因为base.py 中的as_view 函数不携带来自dispatch() 以外的其他方法的__dict__ 方法。 Source.
正如documentation 所说,您只能装饰一个类或覆盖dispatch() 方法。

【讨论】:

    猜你喜欢
    • 2015-02-03
    • 2015-03-25
    • 2019-05-29
    • 2015-09-04
    • 1970-01-01
    • 2015-03-05
    • 2017-06-02
    • 1970-01-01
    相关资源
    最近更新 更多