DJango Interview Questions

Django 面试题

2025年3月17日 | 阅读 7 分钟

以下是顶级的、经常被问到的Django 面试题及答案列表。

1) 解释 Django。

Django 是一个用 Python 编写的免费开源的 Web 应用程序框架。它是一个服务器端 Web 框架,可提供安全且可维护的网站的快速开发。


2) Django 是什么意思?

Django 的名字来源于 Django Reinhardt,一位 20 世纪 30 年代至 50 年代初的吉普赛爵士吉他手,他被誉为有史以来最伟大的吉他手之一。


3) Django 遵循哪种架构模式?

Django 遵循模型-视图-模板 (MVT) 架构模式。

请看下面的图,展示了 MVT 的控制流。

Django MVT based control flow

在这里,用户向 Django **请求**一个资源,Django 作为控制器,检查 URL 中可用的资源。

如果 URL 匹配,**将调用一个视图**,该视图与模型和模板交互,并渲染一个模板。

Django 将一个**响应**发回给用户,并发送一个模板。


4) 解释 Django 架构。

Django 遵循 MVT (模型-视图-模板) 模式。它与 MVC 略有不同。

模型 (Model): 这是数据访问层。它包含有关数据的全部信息,即如何访问数据、如何验证数据、数据的行为以及数据之间的关系。

我们来看一个例子。我们正在创建一个名为 Employee 的模型,它有两个字段 first_namelast_name

视图 (View): 这是业务逻辑层。这一层包含访问模型并将请求委托给适当模板的逻辑。它就像模型和模板之间的桥梁。

模板 (Template): 这是表示层。这一层包含与表示相关的决策,即在网页或其他文档类型上应如何显示某些内容。

要配置模板系统,我们必须在 settings.py 文件中提供一些条目。


5) Django 是一个高级 Web 框架还是低级框架?

Django 是一个高级 Python Web 框架,它旨在实现快速开发和简洁、现实的设计。


6) Django 如何发音?

Django 的发音是 JANG-oh。这里的 D 是不发音的。


7) Django 如何工作?

Django 可以分解为许多组件:

Models.py 文件:此文件通过将您的单行代码扩展到完整的数据库表来定义您的数据模型,并添加预构建的管理部分来管理内容。

Urls.py 文件:它使用正则表达式捕获 URL 模式以进行处理。

Views.py 文件:这是 Django 的主要部分。实际的处理发生在视图中。

当访问者访问 Django 页面时,Django 首先检查您创建的 URL 模式,并使用该信息检索视图。然后,视图处理请求,必要时查询您的数据库,并将请求的信息传递给模板。

之后,模板以您创建的布局呈现数据并显示页面。


8) 哪个基金会管理 Django Web 框架?

Django Web 框架由一个独立且非营利性的组织 Django Software Foundation (DSF) 管理和维护。该基金会的主要目标是推广、支持和发展 Django Web 框架。


9) Django 稳定吗?

是的,Django 非常稳定。Disqus、Instagram、Pinterest 和 Mozilla 等许多公司多年来一直在使用 Django。


10) Django Web 框架有哪些可用功能?

Django Web 框架中可用的功能包括:

  • 管理界面 (CRUD)
  • 模板
  • 表单处理
  • 国际化
  • 会话、用户管理、基于角色的权限
  • 对象关系映射 (ORM)
  • 测试框架
  • 出色的文档

11) 解释 Django 的优点?

Django 的优点:

  • Django 是一个易于学习的 Python 框架。
  • 它清晰易读。
  • 它用途广泛。
  • 编写速度快。
  • 设计中没有漏洞。
  • 它很安全。
  • 它是可扩展的。
  • 它用途广泛。

12) Django 有哪些缺点?

以下是 Django 的缺点列表:

  • Django 的模块比较庞大。
  • 它完全基于 Django ORM。
  • 组件一起部署。
  • 您必须了解整个系统才能使用它。

13) Django 中有哪些继承样式?

Django 中有三种可能的继承样式:

1) 抽象基类 (Abstract base classes): 当您只希望父类包含您不想在每个子模型中键入的信息时,使用此样式。

2) 多表继承 (Multi-table Inheritance): 如果您正在对现有模型进行子类化,并且需要每个模型都有自己的数据库表,则使用此样式。

3) 代理模型 (Proxy models): 如果您只想修改模型在 Python 级别的行为,而不想更改模型的字段,则使用此样式。


14) Django 是一个内容管理系统 (CMS) 吗?

不,Django 不是 CMS。相反,它是一个 Web 框架和编程工具,可以帮助您构建网站。


15) 如何在 Django 中设置静态文件?

在 Django 中设置静态文件需要三个主要步骤:

1) 在 settings.py 中设置 STATIC_ROOT

2) 运行 manage.py collectstatic

3) 在 PythonAnywhere 的 Web 标签页中设置一个静态文件条目


16) Django 中间件有哪些典型用法?

Django 中间件的一些用法包括:

  • 会话管理,
  • 使用身份验证
  • 跨站请求伪造保护
  • 内容 Gzip 压缩

17) Django 字段类类型的作用是什么?

Django 字段类类型指定:

  • 数据库列类型。
  • 渲染表单字段时可用的默认 HTML 小部件。
  • Django 管理中使用的最小验证要求。
  • 自动生成的表单。

18) django-admin.py 和 manage.py 的用途是什么?

django-admin.py: 它是 Django 用于管理任务的命令行实用程序。

manage.py: 它是每个 Django 项目中自动创建的文件。它是 Django-admin.py 的一个薄包装器。它的用法如下:

  • 它将您的项目包添加到 sys.path。
  • 它设置 DJANGO_SETTING_MODULE 环境变量以指向您的项目 settings.py 文件。

19) Django 中的信号是什么?

信号是包含有关正在发生的事情的信息的代码片段。使用调度器来发送信号并监听这些信号。


20) 信号中有两个重要参数是什么?

信号中有两个重要参数是:

  • 接收器 (Receiver): 指定连接到信号的回调函数。
  • 发送者 (Sender): 指定接收信号的特定发送者。

21) 如何处理 Django 中的 URL?

为了处理 URL,Django 框架使用 **django.urls** 模块。

我们打开项目的 urls.py 文件,看看它是怎样的。

// urls.py

请看,Django 已经为 admin 指定了一个 URL。path 函数的第一个参数是字符串或正则表达式类型的路由。

视图参数是一个视图函数,用于向用户返回响应(模板)。

django.urls 模块包含各种函数,path(route,view,kwargs,name) 是其中之一,用于映射 URL 并调用指定的视图。


22) Django 异常是什么?

异常是一种导致程序失败的异常事件。为了处理这种情况,Django 使用其异常类,并且还支持所有核心 Python 异常。Django 核心异常类定义在 django.core.exceptions 模块中。


23) Django 异常类有哪些不同类型?

django.core.exceptions 模块包含以下类:

Exception描述
AppRegistryNotReady在应用加载过程之前尝试使用模型时会引发此异常。
ObjectDoesNotExistDoesNotExist 异常的基类。
EmptyResultSet如果查询未返回任何结果,则引发此异常。
FieldDoesNotExist当请求的字段不存在时引发。
MultipleObjectsReturned如果查询只期望一个对象但返回多个对象,则会引发此异常。
SuspiciousOperation当用户执行了从安全角度来看应被视为可疑的操作时,会引发此异常。
PermissionDenied当用户没有权限执行请求的操作时引发。
ViewDoesNotExist由 django.urls 引发,当请求的视图不存在时。
MiddlewareNotUsed当服务器配置中未使用中间件时引发。
ImproperlyConfigured当 Django 配置不当(任何方面)时,会引发 ImproperlyConfigured 异常。
FieldError当模型字段出现问题时引发。
ValidationError当表单数据验证或模型字段验证失败时引发。

24) Django 会话是什么?

会话是一种在与 Web 应用程序交互期间在服务器端存储信息的机制。默认情况下,会话存储在数据库中,并且还支持基于文件和基于缓存的会话。


25) Cookie 在 Django 中扮演什么角色?

Cookie 是一小段信息,存储在客户端浏览器中。它用于永久(或指定时间)地将用户数据存储在文件中。Cookie 有其到期日期和时间,并在到期后自动删除。Django 提供了内置方法来设置和获取 cookie。

set_cookie() 方法用于设置 cookie,get() 方法用于获取 cookie。

还可以使用 request.COOKIES['key'] 数组来获取 cookie 值。