Django-24 中间件

2021-07-31  本文已影响0人  JuliusL

编写中间件

注册中间件

MIDDLEWARE = [
  ...
]

案例:访问5次禁止访问


class VisitLimit(MiddlewareMixin):

    visit_times = {}

    def process_request(self,request):
        ip_address = request.META['REMOTE_ADDR']
        path_url = request.path_info
        if not re.match('^/test',path_url):
            return 
        times = self.visit_times.get(ip_address,0)
        print('ip',ip_address,'已经访问',times)
        self.visit_times[ip_address] = times + 1
        if times < 5:
            return
        
        return HttpResponse("您已经访问过"+str(times)+"次,访问被禁止")

Django请求流程图.png

CSRF防范

配置步骤:

1,settings.py中确认MIDDLEWARE中django.middleware.csrf.CsrfViewMiddleware是否打开
2,模板中,form标签下添加如下标签

{% csrf_token %}

特殊说明

如果某个视图不需要django进行csrf保护,可以用装饰器关闭对此视图的检查
样例:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_view(request):
  return HttpResponse('Hello world')
上一篇 下一篇

猜你喜欢

热点阅读