1. 程式人生 > >Django之CSRF以及CBV補充

Django之CSRF以及CBV補充

res pre rom req .html return exe self foo

1.CSRF

  a.基本應用

    form表單中添加

    {% csrf_token %}

  b.全棧禁用

    # ‘django.middleware.csrf.CsrfViewMiddleware‘,

  c. 局部禁用
‘django.middleware.csrf.CsrfViewMiddleware‘,

    from django.views.decorators.csrf import csrf_exempt

[email protected]_exempt

    def csrf1(request):

      if request.method == ‘GET‘:

        return render(request,‘csrf1.html‘)

      else:

        return HttpResponse(‘ok‘)

  d.局部使用

  # ‘django.middleware.csrf.CsrfViewMiddleware‘,

  from django.views.decorators.csrf import csrf_exempt,csrf_protect

[email protected]_protect

  def csrf1(request):

    if request.method == "GET":

      return render(request,‘csrf1.html‘)

    else:

      return HttpResponse(‘OK‘)

  c.特殊CBV

    form django.views import View

    from django.utls.decorators import method_decorator

[email protected]_decorator(csrf_protect,name=‘dispatch‘)

    class Foo(View):

      def get(self,request):

        pass

      def post(self,request):

        pass

  PS:CBV中添加裝飾器

    def wrapper(func):

      def inner(*args,**kwargs):

        return func(*args,**kwargs)

      return inner

    #1.指定方法上添加裝飾器

      class Foo(View):

[email protected]_decorator(wrapper)

        def get(self,request):

          pass

        def post(self,request):

          pass

    2.在類上添加

[email protected]_decorator(wrapper,name=‘dispatch‘)

      class Foo(View):

        def get(self,request):
          pass

        def post(self,request):

          pass

    

    

Django之CSRF以及CBV補充