首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django优雅实现软删除,支持Admin和DRF软删除

同样DRF对外操作其他接口,如查询,修改操作,就不允许找到已经软删除数据。 自带Admin 既然是超级管理后台,那么就允许操作任何数据,包括已经软删除,而不是列表找不到软删除数据。...简而言之: drf找不到删除数据,admin需要全部数据 drf和admin删除数据都是软删除 解决方案 DRF Django Manager 赋予了 Django模型(Model)中操作数据库能力...也就是如:Book.objects.all()中objects。有没有想过它到底是什么? 显然,默认模型Manager并不能解决我们问题,所以我们需要自定义模型Manager。...即: drf找不到删除数据 drf执行删除是软删除 Admin 首先再刚刚代码基础上,我们启用Admin,进入后台看看效果。...由于我们已经在模型层通过Manager直接改变了最初数据过滤后样子,这里怎么重写也是无事于补。 于是我在想,那就在定义一个模型管理器,在Admin中使用这个管理器不就好了?

2.1K40
您找到你想要的搜索结果了吗?
是的
没有找到

Python利用Django 构建Rest Api: 快速入门教程

(max_length=50) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True...Django Rest Framework 安装、配置 DjangoRestFramework,简称为DRF,它是负责将数据库模型转换为RESTful API。...这个过程有两个主要步骤:首先通过序列化器将数据转换成JSON,这样就可以通过internet发送数据,然后使用view来定义发送数据。...正如Django有基于类视图一样,DRF也有我们可以使用通用视图。例如,本示例中,我们定义一个列出所有博客文章和一个文章内容详细视图以及更新文章内容视图,脚本如下所示。...当然,如果你喜欢用命令行来调用接口,也可以通过httpie工具在命令行终端获取: http http://127.0.0.1:8000/api/ ?

5.3K20

Django REST framework 日志(重写drf_api_logger)

Django REST framework 日志 默认drf-api-logger没有保存用户并且没有获取日志接口 本文通过重写drf-api-logger增加访问用户及获取日志接口 并且增加定时器删除日志...跳过命名空间(应用程序) DRF_API_LOGGER_METHODS = [] # 跳过方法 DRF_API_LOGGER_STATUS_CODES = [] # 跳过状态码 DRF_API_LOGGER_EXCLUDE_KEYS...= 50 # 日志队列最大长度 DRF_LOGGER_QUEUE_FLUSH_INTERVAL = 10 # 日志队列刷新间隔 查看 可以在 Django 管理面板管理面板查看。...重写 drf_api_logger其实就是django一个应用 复制drf_api_logger源码后执行 pip uninstall drf-api-logger 删除模块(不删也没事) 添加用户信息...() # middleware\api_logger_middleware.py # 导入你验证Token方法,我使用Django-Rest-Knox from knox.auth import

38820

Django中与时区相关安全问题

、订单下单与取消时间等,如果没有考虑时区问题,有可能将导致一些逻辑漏洞。...datetime,因为我们没有给他设置时区: ?...实际上就是指,计算机不知道这个时间,他时区究竟是什么,它可能代表着北京时间,也可能是UTC时间,因为我们没有指定时区,我们无法“假设”其是计算机系统所在时区,也无法“假设”其是UTC时区。...此时,在网站内部存储与使用是UTC时间,而与用户交互时使用TIME_ZONE或手工时区。 我们后文中也以Django默认配置USE_TZ=True为前提条件,否则也没有讨论必要了。...| date:'Y-m-d H:i:s' }} 前者是直接将时间渲染到页面中,后者是通过date这样模板filter处理后渲染在页面中。

2.1K20

Django+JWT实现Token认证

对外提供API不用django rest framework(DRF)就是旁门左道吗?...基于Token鉴权机制越来越多用在了项目中,尤其是对于纯后端只对外提供API没有web页面的项目,例如我们通常所讲前后端分离架构中纯后端服务,只提供API给前端,前端通过API提供数据对页面进行渲染展示或增加修改等...这就需要通过一些方式对请求进行鉴权了 先来看看传统登录鉴权跟基于Token鉴权有什么区别 以Django账号密码登录为例来说明传统验证鉴权方式是怎么工作,当我们登录页面输入账号密码提交表单后,...,这里不细说,只讲下Django如何利用JWT实现对API认证鉴权,搜了几乎所有的文章都是说JWT如何结合DRF使用,如果你项目没有用到DRF框架,也不想仅仅为了鉴权API就引入庞大复杂DRF框架...,通过给User model添加一个token静态方法来处理 class User(AbstractBaseUser, PermissionsMixin): create_time = models.DateTimeField

2.7K20

DRF中多对多ManytoMany字段更新和添加

背景:drf序列化器给模型输出带来了便利但是对于多对多字段网上查询内容却是很少(也有可能是本人不会搜答案)经过我多个日夜摸索,终于实现了我需求,现将自己心得记录一下说下我需求:定义一个订单模型里面的订单...orderId 是自动生成UUID订单区域是外键,下单人也是外键,菜品orderMenu是一个多对多字段(其实通过我查到方法说都是外键字段就可以实现但是个人觉得菜品和订单应该是多对多会比较好理解...)就这样给自己挖了坑因为想要在添加订单同时也要添加对应菜品数量于是自定义了中间表并且添加了数量字段(噩梦开始~~~)首先是定义模型类models.py# models.pyimport django.utils.timezone...as timezonefrom django.contrib.auth.models import Userfrom django.db import modelsfrom serverorders.models...主要是一个思路,drf ModelSerializer 和 ModelViewSet 封装太严实了,通过这样方法来更新和添加多对多字段实属自己技术不成熟。

73120

DRFDjango认证和权限高在哪里

Django可以用LoginRequiredMixin和PermissionRequiredMixin给类视图添加认证和权限,DRF做了高级封装,提供了更简洁实现方式。...因为前面只给Snippet添加了owner字段,还没有写反序列化更新模型代码,所以通过请求访问视图,再尝试反序列化时候,报错了。...我们请求中并没有用户信息,正常来说在访问视图时候就该被拦截了。 给视图添加认证 我们需要让API更符合常规,让未认证用户不能执行视图中代码。...登录视图 如果用浏览器打开http://127.0.0.1:8000/snippets/,会发现只有GET方法没有POST,这是因为需要添加DRF登录视图,在tutorial/urls.py中添加rest_framework.urls...这块内容比Django认证系统那套简洁,但是有点混淆,另外我之前参照网上实现了一版JWT,也有点不一样。看来还得写篇对比文章才行。

1.5K20

django框架使用mysql步骤

在创建好django项目的基础上来讲解使用orm框架 注意:首先在mysql中手动或者通过命令创建一个数据库,我先创建一个名为orm数据库。...1:在项目文件夹中settings.py文件中配置mysql数据库链接字符串及时区配置 # 注册app INSTALLED_APPS = [ 'teacher', 'django.contrib.admin...'qq') phone = models.CharField(max_length=20, default='', verbose_name='手机号') create_time = models.DateTimeField...4:通过pycharm或者xshell链接开发环境中linux系统进入django项目根目录中,执行生成迁移文件 python manage.py makemigrations teacher ?...然后将生成文件通过pycharm获取下来如下: ? 5:执行迁移文件生成数据库表 python manage.py migrate ? 通过navicat软件查看生成数据表: ?

78010

Django实战篇-论坛模型层

如果是在虚拟机中创建项目,切换到对应虚拟环境,再执行 django-admin.py startproject my_project(项目名)。...框架篇-Django博客应用-创建项目 安装项目需要第三方库;进入项目虚拟环境,pip install 模块名/包名 Django 框架 widget-tweaks 用于 BootStrop 表单渲染...② 将全局语言配置改成中文,时区改成上海。 LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai' ?...版块由管理员创建 话题由平台用户发起 帖子用作平台用户交流 ① 论坛版块 Board 每个版块就像一个分类,在指定版块里面,用户可以通过创建新话题 Topic 讨论,其它用户参与讨论回复。...Post 必须有一个并且只有一个与之关联用户。 一个用户可能有很多或没有回帖。

58220

Python进阶40-drf框架(二)

---- 解析模块 ---- 为啥要配置解析模块 """ 1)drf给我们通过了多种解析数据包方式解析类 2)我们可以通过配置来控制前台提交哪些格式数据后台在解析,哪些数据不解析 3)全局配置就是针对每一个视图类...(后续就是服务器抛异常给前台) 4)自定义异常目的就是解决drf没有处理异常,让前台得到合理异常信息返回,后台记录异常具体信息 """ ---- 源码分析 # 异常模块:APIView类dispatch...,并进入校验阶段  ---- 反序列化校验与入库 serializer.py # 序列化组件 - 为每一个model类通过一套序列化工具类 # 序列化组件工作方式与django froms组件非常相似...| 不通过 # 3)不通过返回 book_ser.errors 给前台,通过 book_ser.save() 得到新增对象,再正常返回 # 序列化类总结: # 1)设置必填与选填序列化字段...1, 'msg': '数据有误', }) # pks与request_data数据筛选, # 1)将pks中没有对应数据

1.9K20

Django学习-第七讲:django常用字段、字段属性,外键和表关系、外键操作

django中是有时区概念,使用时要考虑到时区问题,默认使用是 UTC时区,分为 navie(没时区) 和 aware(有时区),如果项目不是国际,可以我们将时区关闭,使用本地时间。...因为Django在处理字符串相关Field时候,即使这个Fieldnull=False,如果你没有给这个Field传递任何值,那么Django也会使用一个空字符串""来作为默认值存储进去。...如果没有指定这个参数,那么在映射时候将会使用模型名来作为默认表名。 2. ordering 设置在提取数据排序方式。...即在article实例中可以通过author属性来操作对应User模型。这样使用起来非常方便。...以后通过article.author访问时候,实际上是先通过author_id找到对应数据,然后再提取User表中这条数据,形成一个模型。

3.9K30
领券