Django面试题(小结一)

文章目录

    • 一、Django常用命令
    • 二、Django中常见的过滤器和标签
    • 三、MVC和MTV区别
    • 四、模板变量中点“.”的特殊含义
    • 五、什么是wsgi,uwsgi,uWSGI?
    • 六、django执行顺序
    • 七、中间件的执行流程
    • 八、 列举django中间件的5个方法
    • 九、简述什么是会话,简述cookie和session的区别
    • 十、跨域请求Django是如何处理

一、Django常用命令

创建项目django-admin startproject mysite
创建apppython manage.py startapp app01
启动项目python manage.py runserver
修改端口号python manage.py runserver 127.0.0.1:新端口号
生成迁移文件python manage.py makemigrations
同步数据库python manage.py migrate
收集静态文件python manage.py collectstatic

二、Django中常见的过滤器和标签

{{ 变量名|过滤器名称:参数 }}

default		length		slice		date		safe		cut		join

{%tags 标签%}

{%for 临时变量 in 序列 %} ... {%endfor%}
{% for .. in .. %} ... {% empty %} ... {% endfor %}
{% if .. %}  ... {% endif %}
{% if name_length|length > 6 %} ... {% else %}   ... {% endif %}
{% if name_length|length > 6 %} ... {% elif age == 20 %} ... {% else %}  ... {% endif %}
load 和 static 标签

三、MVC和MTV区别

模型(M),控制器(C ),视图(V)。
模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。

Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

四、模板变量中点“.”的特殊含义

点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值。
模板系统遇到(.)时按以下查询顺序查询
1字典查询,		变量名.key 获取值
2属性或方法查询,传递对象,变量名.变量名(属性或无参数的方法名称)
3数字索引查询,列表, 	变量名.索引

五、什么是wsgi,uwsgi,uWSGI?

WSGI:
    web服务器网关接口,是一套协议。用于接收用户请求并将请求进行初次封装,然后将请求交给web框架
    实现wsgi协议的模块:
        1.wsgiref,本质上就是编写一个socket服务端,用于接收用户请求(django)
        2.werkzeug,本质上就是编写一个socket服务端,用于接收用户请求(flask)
uwsgi:
    与WSGI一样是一种通信协议,它是uWSGI服务器的独占协议,用于定义传输信息的类型
uWSGI:
    是一个web服务器,实现了WSGI协议,uWSGI协议,http协议,

六、django执行顺序

1.wsgi,请求封装后交给web框架(Flask、Django)
2.请求中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session -
3.路由匹配,根据浏览器发送的不同url去匹配不同的视图函数
4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染 - 
5.响应中间件,对响应的数据进行处理。
6.wsgi,将响应的内容发送给浏览器。
总之:
一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,
(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),
视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户

七、中间件的执行流程

	中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。
	1.请求过来,中间件拦截部分请求 (比如验证session,没有登录的请求一些页面,跳转至登录页)
	2.到url,分发请求到views视图,
	3.通过CBV和FBV的get请求将templates页面渲染返回给用户
	并能传递参数实例化其他form类

Django面试题(小结一)_第1张图片

八、 列举django中间件的5个方法

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

九、简述什么是会话,简述cookie和session的区别

所谓的会话过程就是指从打开浏览器到关闭浏览器的过程。
最浅显的就是储存位置的不同(借鉴一下别人的图)存储数据量不同,安全性不同
(1)Cookie以文本文件格式存储在浏览器中,而session存储在服务端
(2)cookie的存储限制了数据量,只允许4KB,而session是无限量的
(3)我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此它更安全
(4)设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。

Django面试题(小结一)_第2张图片

十、跨域请求Django是如何处理

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

你可能感兴趣的:(面试题)