django中间件,第三方验证码,配置发送邮件,配置404,500,以类的形式写视图函数

  • 一、中间件
    • 当发出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
  • 二、第三方验证码  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])
      • 接收方为一个列表,里面是接收方的邮箱(可以发给多个邮箱)
  • 四、配置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
  • 五、以类的形式写视图函数
    • 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请求
        • ...

猜你喜欢

转载自blog.csdn.net/qq_41654985/article/details/80929299
今日推荐