美文网首页
Django 项目中可以会问到的点

Django 项目中可以会问到的点

作者: MikeShine | 来源:发表于2020-03-15 15:05 被阅读0次

写在前面

在面试后台岗位的过程中,对于简历上写的 班牌Django项目,面试官可能会比较关心的几个点,我们进行一下总结。


1. 注册登录接口的实现

这里主要说,注册登录接口中,关于密码加密的部分。
为了避免密码是明文,所以要加密存储到数据库中,这里当然可以有多种方法,Django 中给定了一些内置的加密方法,比如 hashlib库,可以实现一个加密的函数。

# 一个hash加密函数
def hash_code(s, salt='mysite'):
    h = hashlib.sha256()
    s += salt
    h.update(s.encode())
    return h.hexdigest()

然后在 register 接口 和 login 接口中都是用这个 hash_code() 函数。即在注册时,存的就是加密后的密码;在登录是,比较的就是 数据库中的ps==hash_code(input_pas)


2. 签到接口在高并发时候怎么办

这个时候就有2个方向的思路:Ngnix 反向代理来做负载均衡 / Redis 去耦合,加上缓存

2.1 Nginx 反向代理

提高Django并发性的部署方案
Nginx的介绍
总的来说,就是将 Django 部署到 Nginx + uWSGI 上面。

1. uWSGI

uWSGI 是实现了 WSGI协议的一个 WEB 服务器。用来接收客户端的请求,将请求转发到Web应用(比如这里的django application)上。
WSGI(Web service gateway interface)是 Web服务器 和 web应用通信的协议。
功能

  • 进行网络协议间的转换
  • 与 python application 通信

所以实际上,python + uWSGI 就可以实现功能了。但是为了处理高负载、高并发,这里要使用到 Nginx 来做反向代理、负载均衡。

2. Nginx

Nginx详细

可以做 反向代理 的 Web 服务器。

反向代理

Nginx 放在 Web 服务器端,将 Web 请求进行分配,反向代理。
通常用 ip_hash 的负载均衡计算方法。

2.2 redis 作为缓存

可以用 redis 的 list 作为任务队列,减少对数据库的压力


3. Restful 接口

RESTful 的详细解释

在钉钉的1面中,问到了这个 Restful 接口,当时不懂什么东西,现在大概了解一下。

3.1 产生背景

当前流行前后端分离的 web app 设计。在各种前端出现出现的基础上,需要有 统一的机制方便不同的前端和后端进行通信,这就需要 API 架构。 RESTful API是目前比较成熟的一套 API 设计理论。

3.2 个人简单理解

RESTful API 就是给你一套API怎么设计的规范,比如说

  1. 用api关键字来标识接口url
https://example.org/api/

这样看到 api 字眼,就明白这个url 是完成前后台数据交互的

  1. 将版本信息放在 url 中
https://api.example.org/v1/
https://api.example.org/v2/
  1. Url 中都是资源,不要出现动词
https://api.example.org/v1/animals
# 上面这个是对的
https://api.example.org/v1/delete-user
# 这个是不对的 
  1. 过滤
    通过 URL 上传参数来传递搜索条件,完成过滤。这个见过很多了。
https://api.example.com/v1/zoos?limit=10:指定返回记录的数量
  1. 请求方式
    GET: 从服务器获取一个资源
    POST:在服务器新建一个资源
    PUT:在服务器更新资源
    DELETE:删除资源

相关文章

网友评论

      本文标题:Django 项目中可以会问到的点

      本文链接:https://www.haomeiwen.com/subject/dpjdehtx.html