Django的视图类

作者: 幼姿沫 | 来源:发表于2021-03-14 20:12 被阅读0次

    1.FBV和CBV的区别和定义

    FBV Function Base View    基于函数的视图函数来处理请求

    CBV Class    Base View    基于类的视图函数来处理请求

    如何给CBV加装饰器

    Class Base Views 导入Method_Decorator装饰器

    给方法加      method

    给dispatch加  dispatch

    给类加        class

    2.django中常用的视图响应方式

    response HttpResponse JsonResponse字符串  redirect 跳转不同页面

    视图函数中,验证装饰器有哪些?

    验证是否已经登录            @annoymous_required

    验证用户是否已经通过身份认证@login_required

    允许超级用户才能访问视图 @superuser_only

    检查是否是ajax请求      @ajax_required

    检查用户是否属于有权限的用户组访问 @group_required

    用于改进某个视图的响应时间,想知道运行需要多长时间 @timeit

    3.FBV视图函数和CBV视图类的区别

    视图函数 view                    视图类  class

    优点  容易实现跟理解,流程简单        容易拓展跟代码重复使用,

    可以用混合类继承,单独使用类方法处理http请求,

    有许多内置的通用视图函数

    直接使用装饰器

    缺点 代码难以重用,

    处理http请求的时候要有分支表达式  不容易理解,代码流程负载,

    父类混合类中隐藏很多代码,

    使用装饰器的时候需要额外导入或者覆盖方法

    4.Django如何实现高并发

    uWsgi服务器实现web开发的请求响应流程 + Nginx实现负载均衡 + Djangoweb框架

    Nginx + gunicorn + gevent + Django

    5.如何提高Django应用程序的性能

    1.前端优化

    客户端http请求  精灵图 / 雪碧图  将网页中加载的图片统一加载,减少加载速度

    使用浏览器缓存页面  将静态页面资源进行缓存加载,缓存时间自定义

    对html + css + javascript 进行压缩,减少网络通信量

    2.后端优化

    动态数据缓存设置过期时间

    使用celery消息队列实现异步操作,发邮件发短信

    nginx项目部署配置合适的配置参数提升效率增加并发量

    安全因素的话就是使用固态硬盘读写

    服务器横向扩展

    Django中当用户登录到A服务器进入登陆状态,下次被Nginx代理到B服务器会出现什么影响

    如果说在A服务器服务端的session信息没有共享到B服务器,这就是说之前的登陆状态就没有了下次就不会登陆成功

    6.Celery 异步处理的理解

    celery是python开发简洁灵活可靠的分布式任务队列

    本质是生产者消费者模式,生产者生产任务发送到消息队列,消费者负责处理任务

    celery侧重于实时操作,对调度的支持也很好,每天可以处理数以百万计的任务

    简单 celery工作流程配置简单

    快速 一个单进程的celery可以处理百万个任务

    灵活 celery的各个组件均可扩展和自定义

    高可用 当任务中断或者执行失败的时候,它可以重新建立连接尝试执行任务

    celery的应用场景有哪些

    异步任务 用户需要在某一网站等待的时间长,把这种操作交给celery,直接返回给用户。

    等待celery执行完毕之后给了用户,可以提高网站的并发以及用户体验感。

    发送邮件验证

    定时任务  定时清除冗余数据批量在几百台机器执行命令和任务,

    celery可以轻松搞定。

    Celery的工作原理是什么 ?

    消息中间件Broker 任务执行单元Worker  结果存储Backend

    celery  (异步任务  /  定时任务)

    async          celery

    ----------    ----------

    发送

    ----------    ----------

    消息中间件

    broker

    ----------    ----------

    监控            监控

    ----------    ----------

    任务执行单元    任务执行单元

    celery worker  celery worker

    ----------    ----------

    存储            存储

    ----------    ----------

    结果存储

    BackEnd

    celery分布式任务队列 其实就是生产者消费者模式。

    包含异步任务和定时任务。

    异步任务是通常在业务逻辑中被触发并且发往消息队列

    定时任务由celery beat在一定的周期内将任务发往消息队列。

    任务执行单元worker实时监视消息队列获取队列中的任务执行,

    worker执行任务后将结果保存在backend中

    消息中间件  redis / mongodb / Amazon

    任务执行单元  负责从消息队列中取出任务执行,

    可以启动一个或多个,也可以启动在不同的机器节点

    任务执行消息队列任务的执行就是分布式的核心

    结果存储    将任务消息队列中的结果存储在数据库中 mongodb/redis/django ORM

    相关文章

      网友评论

        本文标题:Django的视图类

        本文链接:https://www.haomeiwen.com/subject/btxfcltx.html