django框架 [面试篇]

news2025/3/15 13:53:57

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.coloradmin.cn/o/2315478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息学奥赛一本通 1449:【例题2】魔板

题目 1449:【例题2】魔板 分析 首先注意:输入是按顺时针给出的,但我们处理时需要按正常顺序排,可以用以下代码读入 string s(8, 0); // 初始化全零字符串 cin>>s[0]>>s[1]>>s[2]>>s[3]; cin>>…

你的完美主义:从缺陷到超能力

所属专栏:《逻辑辨证系列》 前情回顾: 《完美还是完成》(一):完成还是完美—完成大于完美 时间、机会、情绪成本 先完成 … 本期: 《完美还是完成》(二):你的完美主…

浅谈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来帮你!这是一款右键菜单管理工具,能快速清理不必要的…

成绩排序(结构体排序)

成绩排序 #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->…

OpenHarmony-XTS测试

OpenHarmony-XTS测试 OpenHarmony-XTS测试环境搭建测试准备开始运行PS OpenHarmony-XTS测试 针对OpenHarmony版本进行XTS测试使用记录。 windows环境。 以acts套件为例。 环境搭建 获取测试套件&#xff0c;两种方法 1&#xff09;官网下载&#xff1a;https://www.openharm…

【物联网-WIFI】

物联网-WIFI ■ ESP32-C3-模块简介■ ESP32-C3-■ ESP32-C3-■ WIFI-模组■ WIFI-■ WIFI- ■ ESP32-C3-模块简介 ■ ESP32-C3- ■ ESP32-C3- ■ WIFI-模组 ■ WIFI- ■ WIFI-

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.…

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…

【HarmonyOS Next】鸿蒙应用常规面试题和答辩思路参考

【HarmonyOS Next】鸿蒙应用常规面试题和答辩思路参考 一、充分了解岗位JD要求 根据招聘发布的岗位JD&#xff0c;进行自我匹配分析。了解基本要求和加分项&#xff0c;以及项目节奏和英文要求等。 技术不匹配的点&#xff0c;是否会影响应聘岗位加分项自己是否掌握&#xf…

《计算机图形学》第二课笔记-----二维变换的推导

前言&#xff1a;为什么这么突兀的把这一节内容放在了第二课&#xff0c;第一是因为我急于求成&#xff0c;第二是因为这一章节太重要了&#xff0c;这几乎是二维三维变换的最核心的东西&#xff0c;理解了这一章节内容&#xff0c;后面的就会像打通了任督二脉一样&#xff0c;…

机器学习(七)

一&#xff0c;监督学习和无监督学习聚类的数据集比较&#xff1a; 监督学习&#xff1a; 数据集包括输入的数据和与之对应的标签 无监督学习&#xff1a; 数据集仅含有输入的数据&#xff0c;要求算法自己通过所给的数据集来确定决策边界 二&#xff0c;聚类(Clustering): 聚…

利用labelimg实现yolov8数据集的制作

我们在使用yolov8进行物体检测识别的时候&#xff0c;由于其内置的n,s,m等模型只包含90多种物体&#xff08;很多其他物品并未包含在其中&#xff09;&#xff0c;导致我们无法直接使用其模型进行视频或者图片的检测识别。这个时候&#xff0c;我们就需要自己制作数据集进行训练…

【0x80070666】-已安装另一个版本...(Tableau 安装失败)

第一种是之前安装过tableau相关软件&#xff0c;但是没卸载干净。 方法1&#xff1a;卸载旧版本 打开 控制面板 → 程序和功能&#xff08;或 添加/删除程序&#xff09;。查找 Tableau Desktop&#xff0c;如果已安装旧版本&#xff0c;卸载它。重新启动电脑后再尝试安装。 …

Word填写窗口功能详解:如何让文档填写更高效?

在日常办公中&#xff0c;我们经常需要让他人填写一些固定格式的文档&#xff0c;比如合同、申请表、调查问卷等。如果直接使用普通文本编辑&#xff0c;填写时可能会破坏排版&#xff0c;甚至修改了不该改动的内容。这时候&#xff0c;Word的填写窗口&#xff08;即“内容控件…

Oracle数据库存储结构--逻辑存储结构

数据库存储结构&#xff1a;分为物理存储结构和逻辑存储结构。 物理存储结构&#xff1a;操作系统层面如何组织和管理数据 逻辑存储结构&#xff1a;Oracle数据库内部数据组织和管理数据&#xff0c;数据库管理系统层面如何组织和管理数据 Oracle逻辑存储结构 数据库的逻…

简单创建一个Django项目并配置neo4j数据库

创建项目&#xff0c;项目的文件夹就是项目的名称 创建项目的基本框架 安装djangorestframework 单击运行 查看浏览器运行效果&#xff1a; 运行效果如下&#xff1a; 创建应用(假如说是创建一个名为myapp的应用)&#xff1a; python manage.py startapp myapp创建之后的…

java实现智能家居控制系统——入门版

文章目录 一、需求二、业务分析三、具体实现创建一个功能接口&#xff0c;实现设备的开关创建一个家电类&#xff0c;作为功能接口的实现类&#xff0c;定义名字和状态分别创建电视机、洗衣机、电灯的类&#xff0c;继承家电类Tv类WashMachine类Lamp类 定义智能控制系统类&…