- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Django面试题及参考答案
一、基础概念题(考察对框架核心的理解)
请简述Django的MVT架构,和传统MVC有什么区别?
参考答案:Django的MVT分别对应Model(数据模型)、View(视图逻辑)、Template(模板渲染)。核心区别在于:传统MVC中Controller负责路由分发和请求处理,而Django将Controller的功能拆分到了URLconf(路由配置)和View中——URLconf负责映射请求到对应的View,View负责处理业务逻辑,Template专注于页面渲染。简单说:Django的View=MVC的Controller+部分View逻辑,Template=MVC的View。
Django的中间件(Middleware)作用是什么?常用的内置中间件有哪些?
参考答案:中间件是介于请求和响应之间的处理层,用于全局统一处理请求(如认证、跨域、日志)或响应(如添加响应头),本质是一个实现了特定方法的Python类。常用内置中间件:AuthenticationMiddleware(用户认证)、CsrfViewMiddleware(CSRF防护)、SessionMiddleware(会话管理)、GZipMiddleware(响应压缩)、CommonMiddleware(处理URL重定向、设置Content-Type等)。
什么是DjangoORM?它的优缺点是什么?
参考答案:ORM(对象关系映射)是将Python类映射到数据库表的技术,让开发者无需写SQL就能操作数据库。优点:①开发效率高,无需关注SQL语法;②兼容性强,支持多种数据库(MySQL、PostgreSQL等),切换数据库无需修改代码;③自带防SQL注入功能。缺点:①复杂查询场景下,ORM生成的SQL效率可能较低,需手动优化(如select_related、prefetch_related);②部分数据库特有功能(如MySQL的存储过程)无法通过ORM直接实现,需用raw()或extra()执行原生SQL。
二、模型(Model)相关题(考察数据层操作)
Django模型中,如何定义一对一、一对多、多对多关系?分别用什么字段?
参考答案:①一对一(One-to-One):用models.OneToOneField(),例如用户表和用户详情表(一个用户对应一个详情);②一对多(One-to-Many):用models.ForeignKey(),例如文章表和分类表(一个分类对应多篇文章,外键写在“多”的一方);③多对多(Many-to-Many):用models.ManyToManyField(),例如文章表和标签表(一篇文章可多个标签,一个标签可对应多篇文章),Django会自动生成中间关联表。
如何优化DjangoORM的查询性能?举3个常用方法。
参考答案:①避免N+1查询:用select_related(关联查询ForeignKey/OneToOneField,一次性加载关联对象)和prefetch_related(关联查询ManyToManyField,通过两次查询拼接结果);②只查询需要的字段:用only()(指定需要的字段)或defer()(排除不需要的字段),减少数据传输;③批量操作:用bulk_create()(批量创建)、bulk_update()(批量更新)替代循环调用save(),减少数据库交互次数;④用exists()判断是否存在,替代count()0(更高效)。
Django模型的on_delete参数有哪些可选值?分别表示什么意思?
参考答案:on_delete用于指定外键关联的对象被删除时,当前对象的处理方式:①CASCADE:级联删除(关联对象删除,当前对象也删除,最常用);②PROTECT:保护,禁止删除关联对象(删除时抛异常);③SET_NULL:关联对象删除后,外键字段设为NULL(需配合null=True);④SET_DEFAULT:设为默认值(需配合default参数);⑤SET():设为指定值或调用指定函数;⑥DO_NOTHING:不做任何操作(可能导致数据库外键约束错误,不推荐)。
三、视图(View)与路由相关题(考察请求处理流程)
Django的视图有哪几种写法?各自的优缺点是什么?
参考答案:①函数视图(FBV):用普通Python函数定义,参数为request,优点是简单直观、灵活,适合简单逻辑;缺点是代码复用性差,复杂逻辑易冗余。②类视图(CBV):继承View或其子
您可能关注的文档
最近下载
- IFC050-Modbus通讯说明文件.docx VIP
- 《金川雪梨膏》标准文本.pdf VIP
- 2025年中国冷藏汽车行业市场深度评估及投资策略咨询报告.docx
- 市政管网工程项目施工方案施工组织设计.doc VIP
- 认证质量管理(ISO9001)手册(质量管理体系).pdf VIP
- 中国神经外科重症患者感染诊治专家共识CB.ppt VIP
- GB50366-2005 地源热泵系统工程技术规范.docx VIP
- SOLAS公约2016年中文综合文本(船海人版)- 第III章 救生设备和装置.pdf VIP
- 2024年南京市浦口区中医院招聘考试真题.docx VIP
- 中国谷物播种机市场供需现状及投资战略研究报告.docx
原创力文档


文档评论(0)