多对多关联的表,如何手动生成第三张表?
tags = models.ManyToManyField(
to="Tag",
through='Article2Tag',
through_fields=('article', 'tag'),
在Django中,服务端给客户端响应信息有几种方式?分别是什么?
- HTTPresponse,
- jsonresponse,
- redirect
web框架的本质是什么?
是一个socket服务端,用户的浏览器其实就是一个socket客户端
django中csrf的实现机制
- django第一次响应来自某个客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面;
- 下次前端需要发起请求(比如发帖)的时候把这个token值加入到请求数据或者头信息中,一起传给后端;Cookies:{csrftoken:xxxxx}
- 后端校验前端请求带过来的token和SESSION里的token是否一致;
Django App的目录结构
什么是Cookie、如何获取、设置Cookie
Cookie是由服务器创建,然后通过响应发送给客户端保存的一个键值对。
response.set_cookie("is_login",True)
request.COOKIES.get("is_login")
什么是session,与cookie的对比、设置、获取、清空session
Session是服务器端技术,利用这个技术,服务器在运行时可以 为每一个用户的浏览器创建一个其独享的session对象,由于 session为用户浏览器独享,所以用户在访问服务器的web资源时 ,可以把各自的数据放在各自的session中,当用户再去访问该服务器中的其它web资源时,其它web资源再从用户各自的session中 取出数据为用户服务。
request.session["is_login"] = True
is_login = request.session.get("is_login")
request.session.flush()
如何防范CSRF
- 启用中间件
- post请求
- 验证码
- 表单中添加{%csrf_token%}标签
get请求和post请求的区别
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456
- POST方法是把提交的数据放在HTTP包的Body中
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制)
- POST方法提交的数据没有限制
- GET与POST请求在服务端获取请求数据方式不同
- GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码
什么是wsgi
wsgi的全称是Web Server Gateway Interface(Web服务器网关接口),它不是服务器、python模块、框架、API或者任何软件,只是一种描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Django、Flask框架写的程序)通信的规范。
使用哪个库可以对字符串进行加密
hashlib
blank和null的区别是什么
- null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空。NULL represents non-existent data.
- blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填。比如 admin 界面下增加 model 一条记录的时候。直观的看到就是该字段不是粗体
QueryDict和dict区别
QueryDict类似字典的自定义类,用来处理单键对应多值的情况。
在 HttpRequest 对象中,属性 GET 和 POST 得到的都是 django.http.QueryDict 所创建的实例。这是一个 django 自定义的类似字典的类,用来处理同一个键带多个值的情况
什么是restful规范?
restful是一种软件架构风格或者说是一种设计风格,并不是标准,它只是提供了一组设计的原则和约束条件,主要用于客户端和服务器交互类的软件。
像设计模式一样,并不是一定要遵循这些原则,而是基于这个风格设计的软件可以更简洁,更#有层次,我们可以根据开发的实际情况,做相应的改变。
它里面提到了一些规范,例如:
- restful 提倡面向资源编程,在url接口中尽量要使用名词,不要使用动词
- 在url接口中推荐使用Https协议,让网络接口更加安全
- 在url中可以体现版本号
Django本身提供了runserver
为什么不能用来部署?
runserver
方法是调试Django时经常用到的运行方式,它使用Django自带的 WSGI Server运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程
Django重定向如何实现?状态码是什么?
- 使用HttpResponseRedirect
- 状态码:302,301
Django中如何加载初始化数据
Django在创建对象时在调用save()方法,之后,ORM框架会把对象的属性转换为写入到数据库中,实现对数据库的初始化;通过操作对象,查询数据库,将查询集返回给视图函数,通过模板语言展现在前端页面
- end -
网友评论