django请求的生命周期?

  • . 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端
    请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中.
  • . url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配,
    一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了.
  • . 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端.
  • . 客户端浏览器接收到返回的数据,经过渲染后显示给用户.

django的内置组件

  • .Admin是对model中对应的数据表进行增删改查提供的组件
  • .model组件:负责操作数据库
  • .form组件:1.生成HTML代码2.数据有效性校验3校验信息返回并展示
  • .ModelForm组件即用于数据库操作,也可用于用户请求的验证

列举django中间件的五个方法?以及django中间件的应用场景

  • .process_request : 请求进来时,权限认证
  • .process_view : 路由匹配之后,能够得到视图函数
  • .process_exception : 异常时执行
  • .process_template_responseprocess : 模板渲染时执行
  • .process_response : 请求有响应时执行

简述什么是FBV和CBV?

FBV和CBV本质是一样的,基于函数的视图叫做FBV,基于类的视图叫做CBV
在python中使用CBV的优点:
- .提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
- .可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

filter和exclude的区别?

两者取到的值都是QuerySet对象,filter选择满足条件的,exclude:排除满足条件的.

values和values_list的区别?

  • values : queryset类型的列表中是字典
  • values_list : queryset类型的列表中是元组

cookie和session的区别?

  • .cookie:
    cookie是保存在浏览器端的键值对,可以用来做用户认证
  • .session:
    将用户的会话信息保存在服务端,key值是随机产生的字符串,value值是session的内容
    依赖于cookie将每个用户的随机字符串保存到用户浏览器上
  • Django中session默认保存在数据库中:django_session表
  • flask,session默认将加密的数据写在用户的cookie中

django的model中的ForeignKey字段中的on_delete参数的作用?

  • 删除关联表中的数据时,当前表与其关联的field的操作
  • django2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常

django中csrf的实现机制?

  • 第一步:django第一次响应来自某个客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面;
  • 第二步:下次前端需要发起请求(比如发帖)的时候把这个token值加入到请求数据或者头信息中,一起传给后端;Cookies:{csrftoken:xxxxx}
  • 第三步:后端校验前端请求带过来的token和SESSION里的token是否一致。

什么是HTTP协议

http(Hypertext transfer protocol)超文本传输协议,通过浏览器和服务器进行数据交互,进行超文本(文本、图片、视频等)传输的规定。也就是说,http协议规定了超文本传输所要遵守的规则。

http请求报文组成

1)请求方法URI协议/版本

2)请求头(Request Header)

3)请求正文

http响应报文组成

1)状态行

2)响应头

3)响应正文

https协议和http协议的区别?

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

  为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

说一下对端口的理解

可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指 计算机内部 或 交换机 路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口都属于物理端口。

什么是mtv

Model(模型): 负责业务对象与数据库的对象(ORM)。

Template(模板):负责如何把页面展示给用户。

View(视图):负责业务逻辑,并在适当的时候调用Model和Template。

什么是wsgi

WSGI是一套接口标准协议/规范;

通信(作用)区间是Web服务器和Python Web应用程序之间;

目的是制定标准,以保证不同Web服务器可以和不同的Python程序之间相互通信

django请求的生命周期

Django的请求生命周期是指当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情

  1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中.
  2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了.
  3. 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端.

4. 客户端浏览器接收到返回的数据,经过渲染后显示给用户.

简述什么是FBV和CBV

一个url对应一个视图函数,这个模式叫做FBV(Function Base Views)

另外一种模式叫做CBV(Class Base views),即一个url对应一个类

什么是ORM

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
ORM在业务逻辑层和数据库层之间充当了桥梁的作用。

Orm和原生slq的优缺点

作用:帮助我们封装一下对数据库的操作,避免了我们写不太好维护的SQL的代码
优点:比较好维护,不用写那些复杂的sql语句
缺点:失去SQL的灵活性,并且越是通用的ORM框架,对性能的消耗就越大

Orm 操作values和values_list的区别

values()的结果得到的是一个字典形式的查询集QuerySet,查询集是一个可迭代对象

values_list()返回的是列表元组

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

cookie:存储数据,当用户访问了某个网站(网页)的时候,我们就通过cookie来向访问者电脑上存储数据

设置: response.set_cookie('my_cookie','cookie value')

获取:value = request.COOKIES["cookie_key"]

cookie和session的区别?

  1. cookie数据存放在客户的浏览器上,session数据放在服务器上.

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。

3、设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。
4、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。
5、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。(Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)

django中csrf的实现机制

django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成。而对于django中设置防跨站请求伪造功能有分为全局和局部。

1)启用中间件
2)post请求
3)验证码
4)表单中添加{% csrf_token%}标签

命令makemigrations和migrate的区别

makemigrations:将模型的更改生成迁移脚本文件。

migrate:将新生成的迁移脚本,映射到数据库中,创建新的表或者修改表的结构。

get请求和post请求的区别

POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息

1.post是取web页面中提交的值

2.get是从数据库中取值

GET是通过URL传给服务器的,POST是通过HTTP头传给服务器的,post的数据是不跟在请求的url后,而是在http头中,get是在url中

谈谈你对restful规范的认识

(1) 每一个URL代表一种资源
(2) 客户端与服务器之间,传递这种资源的某种表现层
(3) 客户端通过 4 个HTTP动词,对服务器端资源进行操作,实现“表现层状态转化”

QueryDict和dict区别

Querydict :可以一键对应多个值

dict :只能一键对应一个值

Django 本身提供了 runserver,为什么不能用来部署

runserver 方法是调试 Django 时经常用到的运行方式,它使用 Django 自带的

django常见面试题相关推荐

  1. Django常见面试题总结(二)

    接上篇文章:https://blog.csdn.net/YZL40514131/article/details/125813096?spm=1001.2014.3001.5501 二十一.select ...

  2. [转载] 根据Python常见面试题来谈谈 Python 闭包

    参考链接: Python闭包 这里根据我们平常见到的一些Python常见面试题来跟大家说一下关于Python闭包的相关问题! 题目: 1.什么是闭包?闭包的定义? 2.手写一个简单的闭包 3.变量作用 ...

  3. mysql关于时间的面试题,mysql时间设置默认值MySQL常见面试题

    1.limit(选出10 到20 条) select * from students order by id limit 9,10; 2.MySQL 会使用索引的操作符号 =,>,=,betwe ...

  4. java类型转换面试题_JavaSE:数据类型之间的转换(附常见面试题)

    数据类型之间的转换 分为以下几种情况: 1)低级到高级的自动类型转换: 2)高级到低级的强制类型转换(会导致溢出或丢失精度): 3)基本类型向类类型转换: 4)基本类型向字符串的转换: 5)类类型向字 ...

  5. Spring常见面试题及答案汇总1000道(春招+秋招+社招)

    Spring面试题以及答案整理[最新版]Spring高级面试题大全(2021版),发现网上很多Spring面试题都没有答案,所以花了很长时间搜集,本套Spring面试题大全,汇总了大量经典的Sprin ...

  6. Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)

    Java多线程面试题以及答案整理[最新版]Java多线程高级面试题大全(2021版),发现网上很多Java多线程面试题都没有答案,所以花了很长时间搜集,本套Java多线程面试题大全,汇总了大量经典的J ...

  7. MySQL常见面试题及答案汇总1000道(春招+秋招+社招)

    MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...

  8. Jvm常见面试题及答案汇总1000道(春招+秋招+社招)

    Jvm面试题以及答案整理[最新版]Jvm高级面试题大全(2021版),发现网上很多Jvm面试题都没有答案,所以花了很长时间搜集,本套Jvm面试题大全,汇总了大量经典的Jvm程序员面试题以及答案,包含J ...

  9. Dubbo常见面试题及答案汇总1000道(春招+秋招+社招)

    Dubbo面试题以及答案整理[最新版]Dubbo高级面试题大全(2021版),发现网上很多Dubbo面试题都没有答案,所以花了很长时间搜集,本套Dubbo面试题大全,汇总了大量经典的Dubbo程序员面 ...

  10. Java常见面试题,2021年及答案汇总

    Java常见面试题,2021年及答案汇总 其实,博主还整理了,更多大厂面试题,直接下载吧 下载链接:高清172份,累计 7701 页大厂面试题 PDF 1.什么是ThreadPoolExecutor? ...

最新文章

  1. 398. Random Pick Index - LeetCode
  2. mysql 回滚失败_浅析Mysql 数据回滚错误的解决方法
  3. udp java_Java实现Udp网络编程
  4. hpunix下11gRac的安装
  5. Android平台RTMP多实例推送的几种情况探讨
  6. 360浏览器清除缓存_微信缓存清理教程
  7. FreeRTOS源码分析与应用开发09:低功耗Tickless模式
  8. python培训班靠谱吗-Python培训机构就业靠不靠谱?
  9. 电脑远程服务_上海苹果笔记本电脑维修寄修上门服务远程双系统组装机安重装更换主板键盘屏...
  10. apache常用模块介绍
  11. 时域有限差分法matlab程序,时域有限差分法的Matlab仿真
  12. 爬取今日头条新闻,并导入execle中(主要用了selenium)
  13. 计算机蓝屏重启,电脑蓝屏怎么解决?电脑蓝屏自动重启解决方法
  14. 数字集群通信知识与应用
  15. 爆料!爆料!亚马逊跨境电商店铺骗局被骗真相曝光!不要在上当了!
  16. 快速开发平台——运用它就可以高效率开发出合乎自己需求的应用软件。
  17. 财管毕业论文哪些题目比较好写?
  18. A题 序号互换(进制转换)
  19. matlab cvx
  20. 一分钟看懂 python继承 (面试题) 万变不离其宗

热门文章

  1. JAVA毕业设计共享汽车管理系统计算机源码+lw文档+系统+调试部署+数据库
  2. 【愚公系列】2022年01月 Django商城项目18-用户中心-密码修改功能页面设计
  3. openGauss数据库基本操作
  4. Photoshop数位板无压感解决方法
  5. map函数——STL库
  6. matlab对语音信号预加重处理,语音信号的预加重处理和加窗处理 | 学步园
  7. 树莓派 kali系统默认密码
  8. Creo:Creo2.0安装实例教程之图文详细攻略
  9. 电脑截图怎么转换成文字?学会这个方法,轻松实现
  10. 黑马程序员之Web前端全栈 · 阶段一 前端开发基础 (1)