10个常见的Django面试题

以下是一些常见的 Django 面试题。这些问题涵盖了 Django 的不同方面,包括模型、视图、模板、中间件、性能优化等,适合用于面试前的复习。

1. Django 的 MVC 和 MTV 模式是什么?

答案要点

  • Django 基于 MTV(模型-模板-视图)架构。与 MVC(模型-视图-控制器)不同:
    • 模型(Model): 数据模型,定义数据结构和数据库交互。
    • 模板(Template): 前端渲染,用于呈现用户界面。
    • 视图(View): 处理用户请求和响应,执行业务逻辑。

2. Django 是如何处理静态文件和媒体文件的?

答案要点

  • 静态文件(如 CSS、JavaScript、图片等)通过 STATIC_URLSTATICFILES_DIRS 设置,主要用于前端资源。
  • 媒体文件(用户上传的文件)通过 MEDIA_URLMEDIA_ROOT 设置。

3. 什么是 Django ORM?它的优点是什么?

答案要点

  • Django ORM(对象关系映射)使开发者可以使用 Python 类和对象来与数据库交互,而无需编写 SQL 语句。
  • 优点:
    • 提高生产力,减少开发时间。
    • 数据库独立性:可以轻松切换数据库后端。
    • 安全性:防止 SQL 注入攻击。

4. 什么是 Django 中间件?举例说明。

答案要点

  • 中间件是处理请求和响应的钩子,可以用于请求预处理、响应后处理、异常处理等。
  • 例子:
    • AuthenticationMiddleware: 处理用户认证。
    • SessionMiddleware: 处理会话存储。

5. Django 的模型字段有哪些类型?

答案要点

  • Django 提供多种模型字段类型,如:
    • CharField: 字符串。
    • IntegerField: 整数。
    • DateTimeField: 日期和时间。
    • TextField: 长文本。
    • ForeignKey: 一对多关系。

6. Django 的信号是什么?使用场景有哪些?

答案要点

  • 信号是 Django 的一种用于解耦组件之间交互的机制。使用场景包括:
    • 用户注册后发送欢迎邮件。
    • 数据模型修改时,执行额外的业务逻辑。

7. Django 中的 QuerySet 是什么?

答案要点

  • QuerySet 是对数据库查询结果的封装,允许通过链式方法调用对数据进行筛选、修改和排序。
  • 实例方法:
    • all(): 获取所有记录。
    • filter(): 根据条件过滤数据。
    • exclude(): 排除指定条件的数据。
    • order_by(): 排序。

8. Django 的视图函数与类视图有什么区别?

答案要点

  • 视图函数:简单的函数,用来处理请求和返回响应。
  • 类视图:继承自 View 类,提供更高的灵活性和可复用性,支持方法重写,适合复杂视图场景。
  • 例如:ListViewDetailView

9. 如何优化 Django 应用的性能?

答案要点

  • 使用缓存(如 Memcached 或 Redis)来缓存视图或数据查询结果。
  • 使用数据库索引提高查询速度。
  • 精简 QuerySet,避免不必要的数据库查询。
  • 使用分页来降低一次性加载的数据量。

10. Django 的 CSRF 防护机制是如何工作的?

答案要点

  • Django 默认启用了 CSRF(跨站请求伪造)保护。
  • 每个 POST 请求都需要包含 CSRF token,通过中间件来验证。
  • 在模板中使用 {% csrf_token %} 标签生成隐藏的 CSRF token 字段。



Copyright © 2019-2024 · yuancheng.works