当前位置: 首页 > news >正文

django框架 [面试篇]

Django 是一个基于 Python 的web框架,遵循"快速开发,不重复造轮子(don't repeat yourself)"的原则,帮助用户构建web应用。

而 Django 它本身提供了一些全栈式的一些组件,包括了 ORM,模板引擎,表单处理,身份校验和后台管理。

首先 ORM 是 Django 提供的,可以使用 Model 类来快速生成数据表,Model 类对应数据表,类属性对应表字段,类实例对应表数据;操作数据库使用Orm的方法,不需要手写 SQL;如果模型类更改,使用 makemigrations 和 migrate 就可以同步到数据库,

然后就是表单模板引擎, Django 提供了模板的方式,可以快速生成 HTML 页面,另外也支持模板复用模板继承。模版表单,可以提交处理后,可以将页面的数据提供到视图进行逻辑处理

  • 常用于前后端不分离的情况(mvt模式)model类, temaplte模版,视图View。这就是常说的 MTV 模式。
  • 如果是 VUE 加Django 前后端分离的情况,模板可能用的比较少

Django 本身提供了一套用户系统,它默认是进行 session型认证,但也可以用到第三方库 DRF 来进行 token 校验,

同时带了一个后台管理系统,可以对模型的数据进行增删改查,另外也可以对admin页面进行定制化的开发,像我之前的在一次开发中,我写了一个博客风格的一个页面展示了博客标题列表,然后在下方有一个支持 MD 输入的编辑器,提交之后形成新的一篇文章,我们点击文章的标题也可以查看文章的内容。

另外 Django 它有很多生态,

  • 比较关键的是第三方库 Django rest framework 可以快速生成 restful 风格的 API。支持序列化,认证,视图集
  • 另外它有很多呃提供了很多命令行工具,比如说 start project 和 start app,可以帮助我们快速的开发写生成呃框架代码和应用代码,还有 create superuser 快速的创建用户等等

Django相比flask,是开箱即得的,flask更加的简洁。

-----------------------------

DRF 是一个高效、标准的 Django API 开发框架,通过序列化器视图集路由的封装,能快速构建 RESTful风格 API,

同时通过权限(设置permission)、认证(authetication如设置jwttoken)等机制保障安全性。

我在项目中,我的做法是项目目录下,放了一个utils包,这里面放通用的一些方法。

myproject/                ← 项目根目录
├── manage.py             ← 
├── myproject/            ← 
│   ├── __init__.py       ← 
│   ├── settings.py       ← 
│   ├── urls.py           ← 
├── app1/                 ← 
├── app2/                 ← 
├── utils/                ← 
│   ├── models.py         ← 模型基类
│   ├── settings.py       ← 
│   ├── urls.py           ← 
  1. 有一个,models.py 中放模型基类,有创建人字段,修改人,创建时间,修改时间等字段。其他模型继承这个模型基类。
    1.  我创建了一个system应用,里面放用户信息,同时重新写了django用户表,并继承模型基类,添加了一些额外的字段,比如姓名、电话、头像等字段。
  2. 有一个viewset.py,里面自定义了一个【模型视图集基类】, 它继承的ModelViewSet类,
    1. 统一了(增删改查)接口的响应结构格式
    2. 增加了一个批量删除的接口
    3. 这里统一配置支持了(后端字段过滤、关键字搜索与排序)
    4. 应用中的view.py文件中,就继承模型视图基类,基本只需配置关键词搜索支持的字段,配置字段过滤支持的字段等。
    5. 实现权限控制,添加permission_classes为IsAuthenticated,他们在请求时就会校验是否登录了
  3. 有一个pagination.py分页器, 这里定义,分页请求的参数、和响应结构,在viewset.py中的list列表接口有被用到
  4. 一个exception.py异常处理函数,这里统一异常拦截处理。也就是接口的一些异常情况,也要进行统一结构的响应。

另外,我习惯使用jwt认证。

使用的是第三库,djangorestframework-simplejwt 。 setting中对simpleJWT进行配置,这样登录后就会返回token。需要登录接口就需要在请求头传递Authorization.

【实际项目】

集成httprunner4工具,封装的接口自动化平台。

  • 测试项目,一个项目会包含一个debugtalk.py文件。
  • 测试用例,每个数据包含一个yaml测试用例的内容。
  • 测试计划,选择所在项目的一部分测试用例来执行。 测试计划执行后,会生成一份测试allure测试报


http://www.mrgr.cn/news/94377.html

相关文章:

  • 基于Redis实现限流
  • Pytorch实现之BCGAN实现双生成器架构的人脸面部生成
  • Interview preparation.md
  • Redis 2025/3/9
  • 整合记录-持续
  • oracle11.2.0.4 RAC 保姆级静默安装(二) DB数据库软件
  • ES 使用geo point 查询离目标地址最近的数据
  • 【lf中的git实战】(我的代码合并到别人那用squash,别人合我这不用!!!)
  • python画图文字显示不全+VScode新建jupyter文件
  • Webservice如何调用
  • 【Node.js入门笔记4---fs 目录操作】
  • 微信小程序从右向左无限滚动组件封装(类似公告)
  • AI学习——深度学习核心技术深度解析
  • Linux--gdb/cgdb
  • Linux入门 全面整理终端 Bash、Vim 基础命令速记
  • 缓存和客户端数据存储体系(Ark Data Kit)--- 应用数据持久化(首选项持久化、K-V、关系型数据库)持续更新中...
  • Ubuntu20.04安装运行DynaSLAM
  • ArcGIS Pro 车牌分区数据处理与地图制作全攻略
  • 深度学习项目--基于DenseNet网络的“乳腺癌图像识别”,准确率90%+,pytorch复现
  • 考研408-数据结构完整代码 线性表的顺序存储结构 - 顺序表