一、django中间件的使用

Django在中间件中预置了六个方法,这六个方法的区别在于不同的阶段执行,对输入或输出进行干预,方法如下:

1.初始化:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件

def __init__(): pass

2.处理请求前:在每个请求上调用,返回None或HttpResponse对象。

def process_request(request): pass

3.处理视图前:在每个请求上调用,返回None或HttpResponse对象。

def process_view(request,view_func,view_args,view_kwargs): pass

4.处理模板响应前:在每个请求上调用,返回实现了render方法的响应对象。

def process_template_response(request,response): pass

5.处理响应后:所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象。

def process_response(request,response): pass

6.异常处理:当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象。

def process_exception(request,exception): pass

二、简述Django请求生命周期

一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数,如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户; 视图函数调用模型类去数据库查找数据,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

1.wsgi ,请求封装后交给web框架(Flask,Django)
2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf,request.session
3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数
4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm,templates
5.中间件,对响应的数据进行处理
6.wsgi,将响应的内容发送给浏览器

三、对cookies与session的了解?他们能单独用吗?

Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但是禁用Cookie就不能得到Session。因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于SessionID,也就得不到Session。

四、Django中哪里用到了线程?哪里用到了协程?哪里用到了进程?

1.Django中耗时的任务用一个进程或者线程来执行,比如发邮件,使用celery.

2.部署django项目是时候,配置文件中设置了进程和协程的相关配置。

五、谈一下你对uWSGI和nginx的理解?

1.uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。

要注意WSGI/uwsgi/uWSGI这三个概念的区分。

WSGI是一种通信协议。

为什么有了uWSGI为什么还需要nginx?
因为nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。
nginx 是一个开源的高性能的HTTP服务器和反向代理:

1.作为web服务器,它处理静态文件和索引文件效果非常高

2.它的设计非常注重效率,最大支持5万个并发连接,但只占用很少的内存空间

3.稳定性高,配置简洁。

4.强大的反向代理和负载均衡功能,平衡集群中各个服务器的负载压力应用

六、用的restframework完成api发送时间时区

class getCurrenttime(APIView): def get(self,request): local_time = time.localtime() time_zone =settings.TIME_ZONE temp = {'localtime':local_time,'timezone':time_zone} return Response(temp)

七、Django、Flask、Tornado的对比

1、 Django走的大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器,给开发者提高了超高的开发效率。 重量级web框架,功能齐全,提供一站式解决的思路,能让开发者不用在选择上花费大量时间。
自带ORM和模板引擎,支持jinja等非官方模板引擎。

自带ORM使Django和关系型数据库耦合度高,如果要使用非关系型数据库,需要使用第三方库

自带数据库管理app

成熟,稳定,开发效率高,相对于Flask,Django的整体封闭性比较好,适合做企业级网站的开发。python web框架的先驱,第三方库丰富

2、 Flask 是轻量级的框架,自由,灵活,可扩展性强,核心基于Werkzeug WSGI工具 和jinja2 模板引擎

适用于做小网站以及web服务的API,开发大型网站无压力,但架构需要自己设计

与关系型数据库的结合不弱于Django,而与非关系型数据库的结合远远优于Django

3、 Tornado走的是少而精的方向,性能优越,它最出名的异步非阻塞的设计方式

Tornado的两大核心模块:

iostraem:对非阻塞的socket进行简单的封装

ioloop: 对I/O 多路复用的封装,它实现一个单例

【django】django面试题总结相关推荐

  1. Python后端开发(主Django)面试题

    最近两个后端同事离职了,帮忙面试了些后端开发的实习生,虽然有过一些后端经验,但我不是主要写后端的,复习了下Django也稍微准备了一些主要是Django相关的面试题,数据库相关部分额外,没有在此举出, ...

  2. Django 必会面试题总结

    文章转自 https://blog.csdn.net/weixin_43063753/article/details/85559540 目录 欢迎关注 1 列举Http请求中常见的请求方式 2 谈谈你 ...

  3. 一套关于 Django 的笔试题

    Django的Model的继承有几种形式,分别是什么? 一.抽象继承: 顺便复习OOP思想,继承是面向对象的大前提╮(╯▽╰)╭,抽象类,之所以被创建是用来被继承的:一个类如果包含任何一种抽象方法,那 ...

  4. Django常见面试题总结(二)

    接上篇文章:https://blog.csdn.net/YZL40514131/article/details/125813096?spm=1001.2014.3001.5501 二十一.select ...

  5. Django框架面试题

    文章目录 1.django创建项目的命令 2.django创建项目后,项目文件夹下的组成部分 3.对MVC.MVT的理解 4.django中models利用ORM对MySQL进行查表的语句 5.Dja ...

  6. html显示数据库图片django,django将图片上传数据库后在前端显式的方法

    1.使用ImageField先安装pillow模块 pip install pillow 2.在app的models中设置 class Image(models.Model): pic_name=mo ...

  7. Django - Django框架 简单介绍

    Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...

  8. [django]Django站点admin支持中文显示和输入设置

    正文: Django站点admin支持中文输入设置,操作如下: 1 需要确定的你的数据库的client客户端和服务端的编码设置为utf-8,如果不是,请将其设置成utf-8编码,我采用mysql,详情 ...

  9. ajax post django,Django中的Ajax POST请求失败

    我正在制作一个Ajax POST请求,但在我的视图中无法识别它. views.py中的代码: @csrf_exempt def upload(request): if request.method = ...

  10. [django]Django输出页面方式的补充

    1.直接输出 -- HTTPResponse helloworld.py from django.utils.httpwrappers import HttpResponse def index(re ...

最新文章

  1. AES和TKIP的区别
  2. R语言应用实战系列(一)-基于R对QQ群聊天记录数据分析
  3. 爱上经典之《蜗牛与黄鹂鸟》
  4. Android 调用系统邮件,发送邮件到指定邮箱
  5. IOS之学习笔记六(可变形参)
  6. 首次自动对接!美国离本土载人航天又进一步,SpaceX成功抵达国际空间站
  7. 并行导致的进程数过大无法连接数据库
  8. SpringBoot整合themeleaf+bootstrap (五)
  9. python数据类型-列表练习
  10. 云之幻哔哩哔哩uwp_【UWP】一款很 Fluent Design 的 Bilibili UWP客户端:哔哩
  11. 自建邮箱系统邮件管理方法
  12. 天堂2芙蕾雅单机版mysql闪退_【图片】天堂2单机版-芙蕾雅。算是我这个老人对天堂2吧友的最后贡献吧!_天堂2吧_百度贴吧...
  13. “野味消费”演变趋势洞察
  14. python智力问答测试,python实现智力问答测试小程序
  15. P2357 守墓人(树状数组/线段树)
  16. 用python打造一颗爱心
  17. 学习过程中量变引起质变的原理
  18. python语言是不是非开源语言_python是开元语言吗?
  19. 《京韵大鼓——大西厢》(骆玉笙)(唱词文本)
  20. 阿里巴巴《Java开发手册(泰山版)》

热门文章

  1. 电池检测步入新领域,武汉蓝博三款科研电池测试设备来助力
  2. cmd命令行把bat或exe执行为windows服务
  3. 阿里HSF(服务框架)
  4. jQuery视频播放器插件
  5. linux测试硬盘速度命令,如何测试Linux磁盘的读写速度
  6. C++ 多线程--STL库 总结版 (详细)
  7. Linux logviewer的功能,文本日志查看器(LogViewer Pro)
  8. am信号包络检波matlab,高频课程设计AM信号包络检波器
  9. 基于SSM+Layui图书借阅管理系统设计
  10. bim 骗局_来自建筑行业的BIM骗局