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 ←
- 有一个,models.py 中放模型基类,有创建人字段,修改人,创建时间,修改时间等字段。其他模型继承这个模型基类。
- 我创建了一个system应用,里面放用户信息,同时重新写了django用户表,并继承模型基类,添加了一些额外的字段,比如姓名、电话、头像等字段。
- 有一个viewset.py,里面自定义了一个【模型视图集基类】, 它继承的ModelViewSet类,
- 统一了(增删改查)接口的响应结构格式
- 增加了一个批量删除的接口
- 这里统一配置支持了(后端字段过滤、关键字搜索与排序)
- 应用中的view.py文件中,就继承模型视图基类,基本只需配置关键词搜索支持的字段,配置字段过滤支持的字段等。
- 实现权限控制,添加permission_classes为IsAuthenticated,他们在请求时就会校验是否登录了
- 有一个pagination.py分页器, 这里定义,分页请求的参数、和响应结构,在viewset.py中的list列表接口有被用到
- 一个exception.py异常处理函数,这里统一异常拦截处理。也就是接口的一些异常情况,也要进行统一结构的响应。
另外,我习惯使用jwt认证。
使用的是第三库,djangorestframework-simplejwt 。 setting中对simpleJWT进行配置,这样登录后就会返回token。需要登录接口就需要在请求头传递Authorization.
【实际项目】
集成httprunner4工具,封装的接口自动化平台。
- 测试项目,一个项目会包含一个debugtalk.py文件。
- 测试用例,每个数据包含一个yaml测试用例的内容。
- 测试计划,选择所在项目的一部分测试用例来执行。 测试计划执行后,会生成一份测试allure测试报


相关文章:
django框架 [面试篇]
Django 是一个基于 Python 的web框架,遵循"快速开发,不重复造轮子(dont repeat yourself)"的原则,帮助用户构建web应用。 而 Django 它本身提供了一些全栈式的一些组件,包括了 ORM,模板引擎,表单…...
吴恩达机器学习笔记复盘(三)Jupyter NoteBook
Jupyter NoteBook Jupyter是一个开源的交互式计算环境: 特点 交互式编程:支持以单元格为单位编写和运行代码,用户可以实时看到代码的执行结果,便于逐步调试和理解代码逻辑。多语言支持:不仅支持Python,还…...
【Docker项目实战】使用Docker部署serverMmon青蛇探针(详细教程)
【Docker项目实战】使用Docker部署serverMmon青蛇探针 一、serverMmon介绍1.1 serverMmon 简介1.2 主要特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、下载serverMmon镜像五、…...
信息学奥赛一本通 1449:【例题2】魔板
题目 1449:【例题2】魔板 分析 首先注意:输入是按顺时针给出的,但我们处理时需要按正常顺序排,可以用以下代码读入 string s(8, 0); // 初始化全零字符串 cin>>s[0]>>s[1]>>s[2]>>s[3]; cin>>…...
Linly-Talker:开源数字人框架的技术解析与影响
一、引言:AI 数字人的发展趋势 近年来,数字人(Digital Human) 技术迅速发展,从最早的 2D 虚拟主播,到如今能够进行实时交互的 3D 智能助手,AI 在多模态交互领域的应用愈发广泛。各大互联网公司…...
你的完美主义:从缺陷到超能力
所属专栏:《逻辑辨证系列》 前情回顾: 《完美还是完成》(一):完成还是完美—完成大于完美 时间、机会、情绪成本 先完成 … 本期: 《完美还是完成》(二):你的完美主…...
Java 8 + Tomcat 9.0.102 的稳定环境搭建方案,适用于生产环境
一、安装 Java 8 安装 OpenJDK 8 bash sudo apt update sudo apt install openjdk-8-jdk -y 验证安装 bash java -version 应输出类似: openjdk version “1.8.0_412” OpenJDK Runtime Environment (build 1.8.0_412-8u412-ga-1~22.04-b08) OpenJDK 64-Bit Server VM (bui…...
Java基础关键_021_集合(五)
目 录 一、HashMap 1.key 存储自定义类型 2.Hash 表存储原理 3.重写 hashCode 和 equals 方法 4.key 为 null 5.jdk 8 后新特性 (1)初始化时 (2)插入 (3)数据结构 6.容量 二、LinkedHashMap 1.…...
mcp 是一种什么协议,怎么构建mcpserver,怎么实现多智能体的调用
MCP(Message Control Protocol)是一种用于分布式系统中多智能体通信的协议框架,特别适合于构建多智能体系统。下面我将介绍MCP协议的基本原理以及如何构建MCP服务器和实现多智能体调用。 MCP协议概述 MCP协议主要用于定义智能体之间如何交换…...
Nginx的流式响应配置详解
现在大模型场景繁多,项目中涉及nginx转发大模型的流式数据时,需配置nginx的转发策略: location /streaming {proxy_pass http://backend_server;proxy_cache off; # 关闭缓存proxy_buffering off; # 关闭代理缓冲chunked_transfer_encoding …...
windows10 清理 C 盘
系统自带功能清理 磁盘清理:右键单击 C 盘,选择“属性” ,点击“磁盘清理” ,系统会开始扫描可清理的文件,如临时文件、回收站文件、系统更新备份文件等。扫描完成后,勾选想要清理的文件类型,点…...
浅谈Linux中的Shell及其原理
浅谈Linux中的Shell及其原理 Linux中Shell的运行原理github地址前言一、Linux内核与Shell的关系1.1 操作系统核心1.2 用户与内核的隔离 二、Shell的演进与核心机制2.1 发展历程2.2 核心功能解析2.3 shell的工作流程1. 用户输入命令2. 解析器拆分指令3. 扩展器处理动态内容变量替…...
ARM内部寄存器与常用汇编指令(ARM汇编)
1 地址空间&RISC与CISC CISC:复杂指令集计算机 RISC:精简指令集计算机 RISC 与 CISC 的比较 2 ARM内部寄存器 3 ARM汇编概述 RISC精简指令可以大致分为几类: 1.内存读写 2.运算 3.跳转/分支 4.比较 而指令的集合就称之为“指令集”…...
【QT5 Widgets示例】Model/View编程初探
文章目录 Model/ViewModel/View编程的优点常见Model类和View类Model/View应用程序示例只读的表格修改文本外观显示变化的数据设置表格标头可编辑视图示例树结构视图示例获取视图选中项 Model/View Model/View编程的优点 Model/View编程介绍:https://doc.qt.io/qt-…...
一键优化右键菜单,高效又清爽!
打工人们你们好!这里是摸鱼 特供版~ 电脑右键菜单杂乱无章,常用功能被淹没?图标显示异常、打印出错让人手足无措?别担心,Easy Context Menu来帮你!这是一款右键菜单管理工具,能快速清理不必要的…...
排查数据库的正在执行的占用的慢sql语句,可以查看生产的执行sql语句时间
1. 生产报错异常: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: master - Interrupted during connection acquisition2.在数据库执行查询生…...
Java泛型程序设计使用方法
Java泛型程序设计是Java语言中一项强大的特性,它允许你编写更加通用和类型安全的代码。以下是Java泛型程序设计的使用方法和技巧: 1. 基本概念 泛型类:可以定义一个类,其中的某些类型是参数化的。 public class Box<T> {pr…...
成绩排序(结构体排序)
成绩排序 #include<stdio.h> #include<stdlib.h> struct student{char name[50];int score;int order; }; int flag; int cmp(const void *a,const void *b){struct student *s1(struct student*)a;struct student *s2(struct student*)b;if(s1->scores2->…...
【redis】lua脚本
在分布式系统与高并发架构的战场中,开发者们始终在与两个永恒的命题博弈:数据一致性与系统性能。当我们试图用Redis构建高速缓存、实现分布式锁或设计秒杀系统时,往往会陷入这样的困境——如何在保证原子性的同时,避免网络往返带来…...
Oracle中的INHERIT PRIVILEGES权限
Oracle中的INHERIT PRIVILEGES权限 存储过程和用户函数的AUTHID属性调用者权限vs定义者权限一个简单的示例INHERIT PRIVILEGES权限的含义INHERIT PRIVILEGES权限的安全隐患注意到Oracle 19c数据库中有如下权限信息: SQL> select grantor,grantee,table_name,privilege fro…...
Kafka相关的面试题
以下是150道Kafka相关的面试题及简洁回答: Kafka基础概念 1. 什么是Kafka? Kafka是一个分布式、可扩展、容错的发布-订阅消息系统,最初由LinkedIn开发,现为Apache项目。它适用于高吞吐量的场景,如大数据处理和实时数据…...
OpenHarmony-XTS测试
OpenHarmony-XTS测试 OpenHarmony-XTS测试环境搭建测试准备开始运行PS OpenHarmony-XTS测试 针对OpenHarmony版本进行XTS测试使用记录。 windows环境。 以acts套件为例。 环境搭建 获取测试套件,两种方法 1)官网下载:https://www.openharm…...
【物联网-WIFI】
物联网-WIFI ■ ESP32-C3-模块简介■ ESP32-C3-■ ESP32-C3-■ WIFI-模组■ WIFI-■ WIFI- ■ ESP32-C3-模块简介 ■ ESP32-C3- ■ ESP32-C3- ■ WIFI-模组 ■ WIFI- ■ WIFI-...
作业9 (2023-05-05 数组的定义和初始化)
第1题/共11题【单选题】 关于一维数组初始化,下面哪个定义是错误的?( ) A.int arr[10] = {1,2,3,4,5,6}; B.int arr[] = {1,2,3,4,5,6}; C.int arr[] = (1,2,3,4,5,6); D.int arr[10] = {0}; A:正确,10个int的一段连续空间,前6个位置被初始化为1,2,3,4,5,6,其他…...
C语言中的流程控制语句
一.流程控制语句的分类: 1.顺序结构 概念:从上往下依次执行,也是程序默认的执行顺序 2.分支结构 概念:程序在执行的过程中出现了岔路(我们只能选择一条支线进行执行) (1).if语句…...
linux常用基本指令汇总
文章目录 01. ls指令02. pwd指令03. cd指令04. touch指令05. mkdir指令06. rmdir指令07. rm指令08. man指令09. cp指令10. mv指令11. cat指令11. more指令12. less指令13. head指令14. tail指令15. time指令16. cal指令17. find指令18. grep指令19. zip/unzip指令20.tar指令21.…...
Python 与 JavaScript 交互及 Web 逆向分析全解析
一、引言 在当今数字化时代,软件开发的复杂性和多样性不断增加,不同编程语言之间的交互与协作变得愈发重要。Python 凭借其简洁易读的语法、丰富的库和强大的数据处理能力,在数据科学、自动化脚本编写等领域占据着重要地位。而 JavaScript 作为前端开发的核心语言,以其在网…...
Docker Desktop 安装与使用详解
目录 1. 前言2. Docker Desktop 安装2.1 下载及安装2.2 登录 Docker 账号2.3 进入 Docker Desktop 主界面 3. Docker 版本查看与环境检查3.1 查看 Docker Desktop 支持的 Docker 和 Kubernetes 版本3.2 检查 Docker 版本 4. Docker Hub 和常用镜像管理方式4.1 使用 Docker Hub4…...
鬼泣:移动系统3
能帮到你的话,就给个赞吧 😘 文章目录 run/Sprint混合空间输入:(leanAngle, maxWalkSpeed) 按布尔混合和选择的区别:自动生成过渡动画dead blending:惯性化节点疑问run/Sprint混合空间为什么速度为0时也设置奔跑动画为…...
解决 HTTP 请求中的编码问题:从乱码到正确传输
文章目录 解决 HTTP 请求中的编码问题:从乱码到正确传输1. **问题背景**2. **乱码问题的原因**2.1 **客户端编码问题**2.2 **请求头缺失**2.3 **服务器编码问题** 3. **解决方案**3.1 **明确指定请求体编码**3.2 **确保请求头正确**3.3 **动态获取响应编码** 4. **调…...
