过完年后,就是春招了,是找工作的好时机,找工作或换工作的同学需要好好准备一下面试了,最近我精选了 10 个关于 Django 的面试题,如果要看更多面试题目,请在公众号后台回复「面试」获取。祝你新的一年,祝你找工作顺利、工作也顺利。

1. Django 这个名字的起源及它代表的含义?

2003 年的秋天,两位 Django 的主创人员在开始使用 Python 来满足新闻网站快速迭代开发的需求,在此过程中发现大量的代码可以复用从而减少工作量提高效率,于是就开发出一个可以填空的 Web 框架,于 2005 年开源,一度成为非常流行的框架。它的名字来源于比利时的吉普赛爵士吉他手 Django Reinhardt。Django 一词也是罗马语术语,含义是「我醒了」。Django 的主要目标是简化数据库驱动的网站的开发。Django 注重组件的重用性和“可插拔性”,敏捷开发和 DRY 法则(Don't Repeat Yourself)。

2. Django 的有哪些优点和缺点/Django的哪些特征是你喜欢的?

Django 是一个安全、快速、敏捷的 web 应用开发框架。

优点:

  • 大规模、丰富、活跃的开源社区支撑。有大量的第三方应用可以集成,用于满足项目的需求。

  • 成熟。Django 已经持续更新迭代十多年,增加了不少新功能并持续加固。

  • 集成后台管理。只需要轻松配置即可自动生成强大的后台管理页面,便于管理 web 应用。

  • 插件支持。允许工程师为应用增加不同的特性,留下足够多的空间来实现自定义功能。

  • 丰富的类库。丰富的类库可以很轻松地为应用增加新功能。

  • ORM。Django 的 ORM 让应用与数据的交互易如反掌。

  • 模板语法及表单类。

  • 国际化。

  • 会话、用户、权限管理。

  • 集成测试框架

每枚硬币都有两面,Django 也不例外。

缺点:

  • 大包大揽: 对于一些轻量级应用不需要的功能模块 Django 也包括了,不如 Flask 轻量。

  • 过度封装: 很多类和方法都封装了,直接使用比较简单,但改动起来就相对麻烦。

  • 性能劣势: 与 C, C++ 性能上相比,Django 性能稍低,这是 Python 的锅,其他基于 Python 的框架也会有这个问题。

3. 什么是 MTV 架构?

它是一种设计模式,包含三个元素:模型(Model 即 M),模板(Template 即 T)和视图(Views 即 V)。该模型可以访问数据并负责处理数据库。模板是管理界面的另一层(表示形式)。至于 View,它负责业务逻辑。它还与模型和模板交互。

4. Django 中 OneToOneField 和 ForeignKey 的差异?

ForeignKey 和 OneToOneField 是 Django fields 最常用的两个类型,在数据库中,ForeignKey 代表一种多对一的关系,映射为 Model 类时需要提供 on_delete 参数,表示删除一条记录时如何处理依赖这该记录的 Models 类。而 OneToOneField 代表一对一的关系,映射为 Models 类时只需要提供依赖的类即可。

5. 什么是 slug,怎么使用它?

slug 的目的是为了 url 更易读(易于 SEO),使用方法也简单,比如 urls.py 中

path('articles/<slug:slug>/', views.article_detail),

那么访问 url articles/building-a-django-site 便会执行视图函数 views.article_detail(request, slug="building-a-django-site").

6. 什么是 mixin?

它是在需要时添加到类中的功能包。实际使用中通过类的继承将功能添加到所需要的类中。在 Django 中,这些软件包用于基于类的视图中。当开发人员不需要大量功能或仅希望使用某些功能时,他们可以使用 mixin 将功能所需的部分注入到类中。

7. 什么是 views,怎么编写 views?

Views 是视图函数,存放主要的业务逻辑代码,是 urls 与 models 交互的桥梁,即用户请求与数据库交互的中间层,是 MVT 架构的 V。

Django 中有两种方法来编写 views,一是基于函数的视图,另一种是基于类的视图。函数类的视图会更简单一些,但可能需要写更多的视图函数,但是基于类的视图会更加灵活和复用,但是稍微复杂些。

8. 说一说 Django 中模型的继承?

类同于 Python 的类继承,Django 也有完善的继承机制。Django 中所有的模型都必须继承 django.db.models.Model 模型,不管是直接继承也好,还是间接继承也罢。你唯一需要决定的是,父模型是否是一个独立自主的,同样在数据库中创建数据表的模型,还是一个只用来保存子模型共有内容,并不实际创建数据表的抽象模型。

Django有三种继承的方式:

抽象基类:被用来继承的模型被称为 Abstract base classes,将子类共同的数据抽离出来,供子类继承重用,它不会创建实际的数据表;多表继承:Multi-table inheritance,每一个模型都有自己的数据库表,父子之间独立存在;代理模型:如果你只想修改模型的 Python 层面的行为,并不想改动模型的字段,可以使用代理模型。

9. 解释一下 django 的 session 框架?

Django 的会话框架能够在网站请求时存储和检索任意数据。session 数据保存在服务器端,将发送和接收 cookies 的过程抽象化,session 通过配置中间件来实现。

Django 默认的配置是激活 session 的,确保 settings.py 文件的配置项:MIDDLEWARE 中包含 django.contrib.sessions.middleware.SessionMiddleware,INSTALLED_APPS 中包含:django.contrib.sessions

session 的数据可以保存在

  • 数据库

  • 缓存

  • 文件

  • cookie

默认情况下,Django 将 session 数据保存在数据库中,如果要提升性能,可以将 session 保存在缓存中,设置好 CACHE 后,设置 SESSION_ENGINE 为 "django.contrib.sessions.backends.cache"。

10. django-admin.py makemessages 或 manage.py makemessages 做何用?

如果你的网站需要国际化,那么会用到这个命令,执行该命令后,Django 会在当前路径生成一个 message file,里面保存了该 web 项目需要被翻译的字符串。

为了使 Django 项目可以翻译,你需要在 Python 代码和模板中添加少量钩子。这些钩子被成为 translation strings 。它们告知 Django:如果在终端用户语言里,这个文本有对应的翻译,那么应该使用翻译。标记字符串是你的职责,系统只会翻译它知道的字符串。

然后 Django 提供工具将翻译字符串提取到 message file 中。这个文件让翻译者方便地提供翻译字符串。一旦翻译者填写了 message file ,就必须编译它。这个过程依赖 GNU gettext 工具集。

完成后,Django 会根据用户的语言偏好,使用每种可用语言对网页进行即时翻译。

Django 的国际化钩子默认是开启的,这意味着在框架的某些位置存在一些 i18n 相关的开销。如果你不使用国际化,你应该在配置文件里设置 USE_I18N = False 。然后 Django 将进行优化,以免加载国际化机制。

最后的话

以上 10 个问题是我认为比较有代表性的几个问题,如果需要更多的 Django 或 Python 相关面试题目,请在公众号后台回复「面试」获取。

如果觉得有所帮助,请点赞、关注、转发支持,感谢!

PS:留言板是我自己创建的,干净,无广告。欢迎留言讨论。

Django 面试题相关推荐

  1. python django面试题(第八章)

    第八章 django 1. 简述http协议和常用请求头 http协议是超文本传输协议 常用请求头: 协议头 说明 Accept 可接受的响应内容类型 Accept-Charset 可接受的字符集 A ...

  2. Django面试题和出现的一些问题

    文章目录 问题 conda 和 django win环境下安装 mysql_client 出现的问题 如果是linux 或者 mac做法 如果你是 win 恭喜你看问题 解决一:使用pymysql 解 ...

  3. python django面试题_Django面试问题

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

  4. python django面试题_Django、Python常见面试题

    一.django 1.中间件 中间件一般做认证或批量请求处理,django中的中间件,其实是一个类,在请求和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法, 如请求过来 执行p ...

  5. Django 必会面试题总结

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

  6. python面试题整理

    一.Python基础 在Django2.0之前外键不需要只需要models.ForeignKey('外键关联')就可以实现了 但是在Django发布2.0之后,需要在这个方法里添加另外一个参数 on_ ...

  7. Python 面试题 大纲

    Python 核心技术 面试题:https://blog.csdn.net/mengnf/article/details/122425328 Python Django 面试题:https://blo ...

  8. flask mysql 版本_flask 数据库字段类型

    使用flask_sqlalchemy 首先引用一下廖雪峰Python教程里关于sqlalchemy的话, 这里我们要讲的是flask_sqlalchemy的用法. 1. 安装 用pip安装即可, 进入 ...

  9. pythondjangoddos_django 服务器选择

    用Pycharm创建第一个Django程序 在Pycharm中选择Django程序 创建项目后的目录是这个样子的 介绍一下主要的几个文件 manage.py manage.py主要有以下几个功能 1. ...

  10. django model filter_Django开发常用方法及面试题

    Django开发常用方法及面试题 目录 1. 对Django的认识? 2. Django .Flask.Tornado的对比 3. 什么是wsgi,uwsgi,uWSGI? 4. django请求的生 ...

最新文章

  1. 二元关系在计算机中的应用(数据库为主),数据库技术复习题答案 选择题
  2. 数据备份 另一服务器_狡兔三窟-数据备份
  3. http://www.gov.cn/fuwu/bm/gyhxxhb/index.htm
  4. babel css3新特性_2018年面试前端总结
  5. 需求决定设计,设计来源于需求
  6. php 中间表统计,多对多中间表详解
  7. mysql 前n个最大值_MySQL varchar计算:求列的数目和计算N的最大值
  8. 【论文阅读】Multisource Transfer Learning With Convolutional Neural Networks for Lung Pattern Analysis
  9. LPC1758串口ISP下载程序
  10. WebStorage篇
  11. Atitit 施政策略总结 目录 1. 行政综合方面的策略 2 1.1. 加强宣传无处不在策略 占领各大网络与实体阵地 2 1.2. 装点门面,不花钱或者少花钱的东西体系全部搞起来 2 1.3. 加大
  12. Javashop电商系统7.0发布
  13. was升级jdk版本_was升级jdk1.7
  14. 计算机启动显示不正确的分区表,分区表无效怎么办_一开机就显示分区表无效怎么解决...
  15. 领导力学习笔记(1118 周一)
  16. 51nod 13831048 整数分解为2的幂 [递推]【数学】
  17. 视觉理解论文系列(一)——ERNIE-VIL
  18. Tuscany SCA软件架构设计理念分析(二)
  19. ifix 自动化(Automation)错误弹窗的解决方案
  20. Windows10下搭建jekyll环境

热门文章

  1. cad2020打印样式放在哪个文件夹_2019年中级考试准考证打印时间!错过将无法参加考试...
  2. 一文读懂电子材料行业最新发展趋势
  3. python pandas库用法_Python使用Pandas库常见操作详解
  4. 论文伪代码(一)论文伪代码实现(Overleaf在线编辑)
  5. anbmcmdn 上下文无关文法_词法分析 | 上下文无关文法和推导
  6. 电压跟随器Voltage Follower
  7. Python图像增强之直方图均衡化(全局直方图均衡、局部直方图均衡)
  8. NFC读卡MS522|CV520
  9. Qt For Android 获取手机屏幕大小
  10. APP测试点总结(表格形式)