Django常见面试题总结(二)

本文详细总结了Django框架的面试常见问题,包括selected_related与prefetch_related的区别、Cookie和Session的使用、FBV与CBV的概念、migrate与makemigrations的差异,以及Django中的认证流程、用户访问频率控制等核心概念。通过本文,读者可以深入理解Django的运行机制和最佳实践。
摘要由CSDN通过智能技术生成

在这里插入图片描述

接上篇文章:https://blog.csdn.net//article/details/125813096?spm=1001.2014.3001.5501

二十一、selected_related与prefetch_related有什么区别?(重要)

在Django中,所有的Queryset都是惰性的,意思是当创建一个查询集的时候,并没有跟数据库发生任何交互。因此我们可以对查询集进行级联的filter等操作,只有在访问Queryset的内容的时候,Django才会真正进行数据库的访问。而多频率、复杂的数据库查询往往是性能问题最大的根源。
不过我们实际开发中,往往需要访问到外键对象的其他属性。如果按照默认的查询方式去遍历取值,那么会造成多次的数据库查询,效率可想而知。

在查询对象集合的时候,把指定的外键对象也一并完整查询加载,避免后续的重复查询。
1,select_related适用于外键和多对一的关系查询;
2,prefetch_related适用于一对多或者多对多的查询。

二十二、什么是Cookie、如何获取、设置Cookie

会话跟踪技术,保留用户
Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。
具体一个浏览器针对一个服务器存储的key-value({ })

设置Cookie

response.set_cookie("is_login",True)

获取

request.COOKIES.get("is_login")

二十三、什么是session,与cookie的对比、设置、获取、清空session

Session是服务器端技术,利用这个技术,服务器在运行时可以 为每一个用户的浏览器创建一个其独享的session对象,由于 session为用户浏览器独享,所以用户在访问服务器的web资源时 ,可以把各自的数据放在各自的session中,当用户再去访问该服务器中的其它web资源时,其它web资源再从用户各自的session中 取出数据为用户服务。

设置session

request.session['username']="kobe"
request.session.set_expiry(7*24*3600)		# 设置session过期时间为一周后

获取session

username=request.session.get('age','')

删除session

request.session.flush()

二十四、简述什么是FBV和CBV

FBV(function base views)就是在视图函面使用函数处理请求
CBV(class base views)就是在视图里面使用类处理请求

二十五、命令migrate 和makemigrations的差别

生成迁移文件

python manage.py makemigration 子应用名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值