10个常见的Django面试题
以下是一些常见的 Django 面试题。这些问题涵盖了 Django 的不同方面,包括模型、视图、模板、中间件、性能优化等,适合用于面试前的复习。
1. Django 的 MVC 和 MTV 模式是什么?
答案要点:
- Django 基于 MTV(模型-模板-视图)架构。与 MVC(模型-视图-控制器)不同:
- 模型(Model): 数据模型,定义数据结构和数据库交互。
- 模板(Template): 前端渲染,用于呈现用户界面。
- 视图(View): 处理用户请求和响应,执行业务逻辑。
2. Django 是如何处理静态文件和媒体文件的?
答案要点:
- 静态文件(如 CSS、JavaScript、图片等)通过
STATIC_URL
和STATICFILES_DIRS
设置,主要用于前端资源。 - 媒体文件(用户上传的文件)通过
MEDIA_URL
和MEDIA_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
类,提供更高的灵活性和可复用性,支持方法重写,适合复杂视图场景。 - 例如:
ListView
和DetailView
。
9. 如何优化 Django 应用的性能?
答案要点:
- 使用缓存(如 Memcached 或 Redis)来缓存视图或数据查询结果。
- 使用数据库索引提高查询速度。
- 精简 QuerySet,避免不必要的数据库查询。
- 使用分页来降低一次性加载的数据量。
10. Django 的 CSRF 防护机制是如何工作的?
答案要点:
- Django 默认启用了 CSRF(跨站请求伪造)保护。
- 每个 POST 请求都需要包含 CSRF token,通过中间件来验证。
- 在模板中使用
{% csrf_token %}
标签生成隐藏的 CSRF token 字段。
Copyright © 2019-2024 · yuancheng.works