Django企业面试题

发布时间:2018-07-08 17:03:40   来源:文档文库   
字号:

简要说明视图的作用

Django框架中视图是:定义完成各类对象所需功能的函数,接收请求,处理业务逻辑,返回结果

MySQL数据中视图是:查询语句执行后返回的结果集,是对若干张基本表的引用,一张续表,查询语句执行的结果,不存储数据,方便操作,增强可读性,更加安全

DjangoQuerySetgetfilter方法的区别

【输入参数】

get 的参数只能是model中定义的那些字段,只支持严格匹配

filter 的参数可以是字段,也可以是扩展的where查询关键字,如inlike

【返回值】

get 返回值是一个定义的model对象

filter 返回值是一个新的QuerySet对象,然后可以对QuerySet在进行查询返回新的QuerySet对象,支持链式操作QuerySet一个集合对象,可使用迭代或者遍历,切片等,但是不等于list类型(使用一定要注意)

【异常】

get 只有一条记录返回的时候才正常,也就说明get的查询字段必须是主键或者唯一约束的字段。当返回多条记录或者是没有找到记录的时候都会抛出异常

filter 有没有匹配的记录都可以

简述Djangohttp请求的执行流程

在接受一个Http请求之前的准备

启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器。

服务器根据WSGI协议指定相应的Handler来处理Http请求,并且初始化该Handler,在Django框架中由框架自身负责实现这一个Handler

此时服务器已处于监听状态,可以接受外界的Http请求

当一个http请求到达服务器的时候

服务器根据WSGI协议从Http请求中提取出必要的参数组成一个字典(environ)并传入Handler进行处理。

Handler中对已经符合WSGI协议标准规定的http请求进行分析,比如加载Django提供的中间件,路由分配,调用路由匹配的视图等。

返回一个可以被浏览器解析的符合Http协议的HttpResponse

简述Django下的(内建)缓存机制

Django根据设置的缓存方式,浏览器第一次请求时,cache会缓存单个变量或整个网页等内容到硬盘或者内存中,同时设置response头部,当浏览器再次发起请求时,附带f-Modified-Since请求时间到DjangoDjango 发现f-Modified-Since会先去参数之后,会与缓存中的过期时间相比较,如果缓存时间比较新,则会重新请求数据,并缓存起来然后返回response给客户端,如果缓存没有过期,则直接从缓存中提取数据,返回给response给客户端。

DjangomodelSlugField类型字段有什么用途

SlugField字段是将输入的内容中的空格都替换成‘-’之后保存Slug 是一个新闻术语,通常是某些东西的短标签。一个slug只能包含字母、数字、下划线或者是连字符,通常用来作为短标签。通常它们是用来放在URL里的。

SlugField字段的Field.db_index自动设置为True

通常根据另一个值自动生成slug来填充到SlugField的值

Django中如何加载初始化数据

Django在创建对象时在save()方法后,ORM框架会把对象的属性转换为写入到数据库中,实现对数据库的初始化;通过操作对象,查询数据库,将查询集返回给视图函数,通过模板语言展现在前端页

1.django 中当一个用户登录 A 应用服务器(进入登录状态),然后下次请求被 nginx 代理到 B 应用服务器会出现什么影响?

如果用户在A应用服务器登陆的session数据没有共享到B应用服务器,纳米之前的登录状态就没有了。

2.跨域请求问题django怎么解决的(原理)

启用中间件

post请求

验证码

表单中添加{%csrf_token%}标签

3.请解释或描述一下Django的架构

对于Django框架遵循MVC设计,并且有一个专有名词:MVT

M全拼为Model,与MVC中的M功能相同,负责数据处理,内嵌了ORM框架

V全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse

T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎

4.django对数据查询结果排序怎么做,降序怎么做,查询大于某个字段怎么做

排序使用order_by()

降序需要在排序字段名前加-

查询字段大于某个值:使用filter(字段名_gt=)

5.说一下DjangoMIDDLEWARES中间件的作用?

答:中间件是介于requestresponse处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。

6.你对Django的认识?

Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

Django内置的ORM跟框架内的其他模块耦合程度高。

应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。

Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。

Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。

Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能

7. Django重定向你是如何实现的?用的什么状态码?

使用HttpResponseRedirect

redirectreverse

状态码:302,301

8.ngnix的正向代理与反向代理?

答:正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

9. Tornado 的核是什么?

Tornado 的核心是 ioloop iostream 这两个模块,前者提供了一个高效的 I/O 事件循环,后者则封装了 一个无阻塞的 socket 。通过向 ioloop 中添加网络 I/O 事件,利用无阻塞的 socket ,再搭配相应的回调 函数,便可达到梦寐以求的高效异步执行。

10.Django 本身提供了 runserver,为什么不能用来部署?

runserver 方法是调试 Django 时经常用到的运行方式,它使用 Django 自带的

WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程

uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgihttp 等协议。注意 uwsgi 是一种通信协议,而 uWSGI 是实现 uwsgi 协议和 WSGI 协议的 Web 服务器。uWSGI 具有超快的性能、低内存占用和多 app 管理等优点,并且搭配着 Nginx

就是一个生产环境了,能够将用户访问请求与应用 app 隔离开,实现真正的部署 。相比来讲,支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。

11.创建项目,创建应用的命令?

django-admin startproject **
python manage.py startapp **

12. 生成迁移文件?执行迁移?

python manage.py makemigrations

python manage.py migrate

13. 关系型数据库的关系包括那些类型?

ForeignKey:一对多,将字段定义在多的一端中

ManyToManyField:多对多,将字段定义在两端中

OneToOneField:一对一,将字段定义在任意一端中

14. 查询集返回列表的过滤器有哪些?

all():返回所有数据

filter():返回满足条件的数据

exclude():返回满足条件之外的数据,相当于sql语句中where部分的not关键字

order_by():排序

15. 判断查询集中是否有数据?

exists():判断查询集中是否有数据,如果有则返回True,没有则返回False

16.查询集两大特性?惰性执行?

惰性执行、缓存

创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用

本文来源:https://www.2haoxitong.net/k/doc/1589b401ae1ffc4ffe4733687e21af45b207fe4d.html

《Django企业面试题.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式