- 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的核心思想是什么?实际开发中怎么体现的?
答:核心是“电池已内置”(BatteriesIncluded),就是框架自带常用功能,不用额外找第三方库。比如开发时,认证系统直接用django.contrib.auth做登录注册,ORM直接操作数据库不用写原生SQL,表单验证有Form/ModelForm,连后台管理系统admin都是现成的,能省大量重复开发工作。
问:Django的MVT架构和MVC有什么区别?实际开发中各部分职责是什么?
答:MVT是Django对MVC的适配:
MVC:Model(数据模型)、View(业务逻辑)、Controller(路由/控制器)
MVT:Model(和MVC一致,数据模型)、View(业务逻辑,对应MVC的Controller)、Template(模板,对应MVC的View)
实际开发中:Model定义数据结构(比如用户表、文章表),View处理请求(比如查询数据、验证权限),Template负责页面渲染(把View传的数据展示出来),而路由配置(urls.py)承担了部分Controller的转发职责。
问:Django中间件的作用是什么?举2个实际项目中用到的中间件场景
答:中间件是处理请求和响应的“钩子”,介于用户请求和视图函数之间,能全局拦截请求/响应做统一处理。
实际场景:①登录验证中间件:所有需要登录的视图,不用在每个视图里写判断,中间件直接拦截未登录请求跳转到登录页;②日志中间件:记录所有请求的URL、响应时间、客户端IP,方便排查问题;③CORS跨域中间件:解决前后端分离项目的跨域请求问题。
二、核心组件类(考察实操能力)
问:DjangoORM中,select_related和prefetch_related的区别?什么时候用?
答:都是解决跨表查询的N+1问题(1次查主表,N次查关联表),核心区别是关联类型和查询方式:
select_related:用SQLJOIN实现,只能查一对一(OneToOne)、多对一(ForeignKey)关联,一次性把关联数据查出来,适合关联表数据少的情况;
prefetch_related:用多次SQL查询后内存中拼接,支持多对多(ManyToMany)、反向多对一关联,适合关联表数据多的情况;
举例:查询文章(Article)及作者(User,ForeignKey)用Article.objects.select_related(author).all();查询文章及标签(Tag,ManyToMany)用Article.objects.prefetch_related(tags).all()。
问:DjangoForm和ModelForm的区别?实际开发中怎么选?
答:都是表单验证工具,核心区别是是否和Model绑定:
Form:不绑定Model,需要手动定义字段(比如用户名、密码输入框),适合和数据模型无关的表单(比如登录表单、搜索表单);
ModelForm:直接绑定Model,自动生成字段(字段对应Model的字段),还能直接用save()方法保存到数据库,适合和Model相关的表单(比如创建/编辑文章、用户信息修改);
实操技巧:ModelForm可以用fields指定需要的字段,exclude排除不需要的字段,还能自定义验证逻辑(比如重写clean_字段名()方法)。
问:Djangoadmin怎么自定义?举3个实际开发中的自定义场景
答:admin是Django自带的后台管理系统,自定义主要是优化数据管理效率,常用场景:
①自定义列表显示:在admin注册类中用list_display指定显示的字段(比如list_display=[title,author,create_time]),list_filter加过滤条件(比如按创建时间过滤);
②自定义搜索:用search_fields指定可搜索字段(比如search_fields=[title,content]),支持模糊查询;
③关联数据内联编辑:比如文章和评论是一对多关系,用InlineModelAdmin让评论在文章编辑页直接添加/修改,不用单独进入评论管理;
④权限控制:用has_add_permission、has_change_permission控制不同用户的增删改权限(比如普通管理员只能看,不能删)。
三、实战场景类(考察问题解决
您可能关注的文档
最近下载
- 全球Web3.0技术产业生态发展报告.pdf VIP
- 《基于虚拟现实技术的数字艺术展览互动体验创新设计研究》教学研究课题报告.docx
- 2023湖南安全员B证考试题库及答案.pdf VIP
- 嵌入式技术与应用开发项目教程(STM32版)习题答案.pdf VIP
- 中考数学专项提升复习:三角形的动点问题.docx VIP
- 广东春季高考数学2024试卷 .pdf VIP
- 2025年国企招聘考试(公共基础知识)经典试题及答案.docx VIP
- 酸碱中和滴定.ppt VIP
- 某地老年公寓养老院建设项目可行性研究报告(不错).doc
- 2025-2026学年小学音乐四年级上册花城版(2024)教学设计合集.docx
原创力文档


文档评论(0)