Django 面试题

article/2025/2/7 5:57:57

过完年后,就是春招了,是找工作的好时机,找工作或换工作的同学需要好好准备一下面试了,最近我精选了 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:留言板是我自己创建的,干净,无广告。欢迎留言讨论。


http://chatgpt.dhexx.cn/article/xBjPcmZE.shtml

相关文章

Django常见面试题总结(一)

一、ORM是什么&#xff1f;优势&#xff1f; ORM&#xff1a;中文翻译为对象关系映射。 模型类名对应数据库表名 类属性对象数据库表字典 类属性中的字段对应数据库中的约束条件 模型类的多个实例对应于实例 优势&#xff1a; orm的技术特点&#xff0c;提高了开发效率&#xf…

Django面试题

目录 1 列举Http请求中常见的请求方式 2 谈谈你对HTTP协议的认识 3 简述MVC模式和MVT模式 4 简述Django请求生命周期 5 简述什么是FBV和CBV 6 谈一谈你对ORM的理解 7 rest_framework 认证组件的流程 8 什么是中间件并简述其作用 9 django 中间件生命周期 10 django中…

2020年最新Django经典面试问题与答案汇总(上)-大江狗整理

周末抽空整理了下Django经典面试问题及答案&#xff0c;希望对小伙伴们学习和工作有所帮助。如果小编我是负责招聘Python Web或Django开发人员的面试官&#xff0c;我也会考虑问如下问题。从下面可以大致了解一个面试者对Django技术的了解程度。由于篇幅所限&#xff0c;本文将…

用HTML5制作的3D相册

HTML5 非常强大&#xff0c;尤其是和CSS3结合&#xff0c;有时候能达到非同凡响的网页动画效果。今天要分享的这款HTML5应用就是一款很酷的3D立体图片相册应用&#xff0c;它可以用鼠标多拽从多个角度浏览相册图片&#xff0c;点击图片&#xff0c;就可以放大图片&#xff0c;…

HTML5制作信息登记表

# 制作信息登记表#样式需求分析: 一、 通过最外层的大盒子对页面进行整体控制&#xff0c;设置宽高、背景图片及相对定位。 二、 通过标记对表单进行整体控制&#xff0c;对其设置宽高、边距、边框样式及绝对定位。 三、 通过 标记控制标题的文本样式&#xff0c;对其设置…

HTML5制作二级菜单(主菜单的子菜单)

HTML5制作二级菜单&#xff08;主菜单的子菜单&#xff09; 一、HTML文件代码二、 CSS文件代码三、效果图 一、HTML文件代码 <!--submenu.html--> <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><link r…

制作HTML5海报

一、HTML5海报有什么卵用&#xff1f; HTML5海报作用跟一般的海报差不多&#xff0c;但是拥有更生动的灵活的页面和便捷快速的传播途径&#xff08;网络&#xff09;。不仅可以在微信公众号中推广&#xff0c;也可以在票圈&#xff0c;空间&#xff0c;群上推广。做得好的海报&…

用html5和css制作信息登记表

<!doctype html> <html><head><meta charset"utf-8"><title>信息登记表</title><!-- <link rel"stylesheet" href"style07.css" type"text/css"> --><style type"text/css&q…

html5制作购物车页面,利用html来制作一个简单美观的购物车界面

首先来展示一下购物车界面: (学习视频分享:html视频教程) 这个页面只是实现了其布局视图,没有使用js或者jquery相关语言,在博主看来是比较利于我们将其加入到自己的程序中的以下是相关代码: index.html 商品名称单价数量操作旁氏洗发露991删除旁氏洗发露991<

html5制作圆形

代码如下 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Document</title> <style type"text/css"> .addBg { width: 100px; height: 100px; background-color…

html页面转盘如何实现,html5制作转盘的详解及实例

今天给大家带来的案列是html5转盘实例,可以直接拿来做抽奖程序,有需要的朋友可以拿去使用,下面是案列代码。html5制作转盘游戏 h1{width: 100%; height: 3rem; line-height: 3rem; font-size: 1.8rem; color:#c60; text-align: center; font-weight: bolder; } KinerLotter—…

用html做网页作品,HTML5实例:用HTML5制作的网页的15个优秀案例

在这里分享给大家精心挑选的15个HTML5网站模板&#xff0c;这些模板涉及商业、投资、简历、画廊、艺术、慈善、房地产&#xff0c;以及食品等等方面。 1. Zeni – Responsive HTML5 Portfolio Template Demo Download 2. Torn – HTML5 Template 5 Skins Demo Download 3. Fold…

用HTML5制作一个简易计算器

用H5制作一个简易计算器 最近刚学JavaScript&#xff0c;之后紧接着做了一个简易的计算器&#xff0c;能够实现数字的加减乘除运算。 首先&#xff0c;先用HTML5搭建好计算器大体框架。我这里用了两个表格&#xff0c;一个充当显示器&#xff0c;另一个表格就做成计算器按键部…

如何用html做一个贪吃蛇,如何用HTML5制作贪吃蛇游戏

如何用HTML5制作贪吃蛇游戏 发布时间:2020-07-09 15:09:59 来源:亿速云 阅读:122 作者:Leah 如何用HTML5制作贪吃蛇游戏?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 本文介绍了H5 c…

用HTML5制作精美战机游戏

每天要被大学老师催H5作业&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb; 不如看看本文&#xff0c;代码齐全&#xff0c;直接用来做参考案例&#x1f44c;&#x1f3fb; 干货满满不看后悔&#x1f44d;&#x1f44d;&#x1f44d; 代码…

用HTML5制作课程表

无论是上班族还是学生党&#xff0c;都需要一份类似课程表的表格来提醒我们的日程。有了它就可以不必担心自己忘记该干什么事情&#xff0c;到点了该干什么事情。它可以说是我们日常生活中经常接触的事物了&#xff0c;制作一份课程表也很简单&#xff0c;可以用纸写&#xff0…

使用HTML5制作的网页游戏-管道小鸟(附源码)

目录 1.整体项目框架 2.css样式 3. 游戏初始化 4.游戏结束提示 5.效果图​ 1.整体项目框架 2.css样式 *{padding: 0px;margin: 0px;}#game{width: 800px;height: 600px;background-image: url(img/bg.png);position: relative;overflow: hidden;/*溢出隐藏*/}#bird{width…

html做的小游戏,41个用HTML5制作完成的游戏作品

了解的人都应该知道HTML5有大量的动画和交互功能&#xff0c;完全可以用来完成一些游戏类的操作&#xff0c;今天收集分享&#xff1a;41个用HTML5制作完成的游戏作品&#xff0c;希望其中有你喜欢和需要的&#xff0c;或者可以给你带来灵感的。 1-Pirateslovedaisies 2-Torus …

John Petrucci-Wild Stringdom(1)

John Petrucci-Wild Stringdom(1) 第一章 练习导致完美 最能打击一个吉他手的事情&#xff0c;莫过于不能很快地达到自认为理所当然的水平而带来的焦虑。如果你经常在弹了数小时以后依然发现自己一无所获。那么这章就是专门为你写的。这章主要是概括了该如何练习的要点。当你开…

知识的迷宫 网络上的时间是如何度过的

作者&#xff1a;马伯庸 字数&#xff1a;1287 我在写一篇专栏文章&#xff0c;需要查阅一下关于宣武门的资料。   现在查资料比从前方便多了&#xff0c;只消在网上检索一下&#xff0c;立刻得到海量信息。于是很快我就得到了想要的资料&#xff0c;准备动笔写了。  …