- 一、中间件
- 当发出request请求时每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对象,
- 如果返回前者,继续处理其它中间件,如果返回一个 HttpResponse,就处理中止,返回到网页上。
- 每一个中间件有5种方法 process_request,process_view,process_except,process_template_response,process_response
- 配置自定义的中间件 需要在settings.py 中注册中间件
- MIDDLEWARE 中添加自己的中间件
- 定义一个中间件 django 1.11
- from django.untils.deprecation import MiddlewareMixin
- class SpiderMiddleWare(MiddlewareMixin):
- def process_request(self,request):
- http_user_agent = request.META.get('HTTP_USER_AGENT')
- http_user_agent = str(http_user_agent).lower()
- if 'py' in http_user_agent:
- return HttpResponse('滚蛋,小爬虫')
- def process_response(self,request,response):
- return response
- def process_request(self,request):
- 二、第三方验证码 captcha
- 1. pip install django-simple-captcha
- 2. 将captcha 添加到 settings.py 中的 INSTALLED_APPS 中
- 3. 主路由配置 url(r'^captcha/',include('captcha.urls'))
- 4. 迁移同步 captcha 依赖的表
- python manage.py makemigrations
- python manage.py migrate
- 5.在forms 表单验证类中实例化 CaptchaField
- from captcha.fields import CaptchaField
- captcha = CaptchaField(error_messages={
- 'invalid':'验证码错误'
- })
- 6.在视图函数中需要验证码的页面返回实例化的表单验证类form
- 7.在页面上 {{ form.captcha }} 获取验证码图片
- 三、配置发送邮件
- 1.settings.py 中配置
- EMAIL_HOST = ' ' 邮箱的smtp服务器
- EMAIL_PORT = 25 端口
- EMAIL_HOST_USER = '' 邮箱
- EMAIL_HOST_PASSWORD = '' 客户端授权密码
- EMAIL_FROM = '' 发送人邮箱
- EMAIL_USE_TSL = False 可写
- 2.from django.core.mail import send_mail
- send_main(内容标题(send_title),内容主体(send_body),EMAIL_FROM,[email])
- 接收方为一个列表,里面是接收方的邮箱(可以发给多个邮箱)
- 1.settings.py 中配置
- 四、配置404,500,页面
- 1.在settings 中配置
- handler404 = 'users.views.handler_404' 处理404的视图函数位置
- handler500 = 'users.views.handler_500' 处理404的视图函数位置
- 2.在views 中
- def handler_404(request):
- ret = render(request,'404.html')
- ret.status_code = 404
- return ret
- def handler_500(request):
- ret = render(request,'500.html')
- ret.status_code = 500
- return ret
- def handler_404(request):
- 1.在settings 中配置
- 五、以类的形式写视图函数
- url(r'^$', IndexView.as_view(), name='index')
- views.py中
- from django.views import View
- class IndexView(View):
- def get(self,request): 处理get请求
- ....
- def post(self,request): 处理post请求
- ...
- def get(self,request): 处理get请求
django中间件,第三方验证码,配置发送邮件,配置404,500,以类的形式写视图函数
猜你喜欢
转载自blog.csdn.net/qq_41654985/article/details/80929299
今日推荐
周排行