作用在restful规范中要去,后端的API中需要体现版本。
基于GET1versioning_class = QueryParameterVersioning
url中的version自动赋值给request.version
从源码得知,version这个关键字可以通过全局配置里的VERSION_PARAM来修改
基于路由URL1versioning_class = URLPathVersioning
基于Accept请求头1versioning_class = AcceptHeaderVersioning
全局配置上述示例中,如果想要应用某种 版本 的形式,需要在每个视图类中定义类变量:
123456789from rest_framework.views import APIViewfrom rest_framework.response import Responsefrom rest_framework.versioning import QueryParameterVersioningclass UserView(APIView): versioning_ ...
作用在drf开发中,如果有些接口必须同时满足:A条件、B条件、C条件。 有些接口只需要满足:B条件、C条件,此时就可以利用权限组件来编写这些条件。
权限组件 = [权限类, 权限类, 权限类, …] -> 执行所有权限类的has_permission方法,返回True通过、返回False表示不通过
执行所有的权限类
学会源代码,扩展 + 自定义
默认情况下,保证所有的权限类中的has_permission方法都返回True,也就是支持且关系
且关系默认支持:A条件 且 B条件 且 C条件,同时满足。
1234567891011class PermissionA(BasePermission): message = {"code": 1003, 'data': "无权访问"} def has_permission(self, request, view): if request.user.role == 2: return True ...
作用用来用户授权,100个API,1个无需登录即可使用,99个登录才能使用
直接用编写类 -> 认证组件
继承BasicAuthentication,并且定义authenticate函数
应用认证组件
在视图类里加入 authentication_classes = [MyAuthentication, ]
逗号后面可以加多个认证方法
不需要认证的视图就加authentication_classes = [ ]
全局配置因为有多个需要验证的视图类,就可以加进全局配置里,就不用每个都写了
注:在drf中,优先先去全局中读取,再去视图类中读取。
(也就是视图类中又定义了就以视图类里定义的为准,会覆盖全局配置)
但是验证组件放进视图里会跟全局起冲突,所以要单独拿出来,然后视图中调用即可
(这里单独定义 ext/auth.py 了)
多个认证类
当前端有不同校验方法从而产生多个认证类的时候
假如所有的认证类都返回了None,但是根据drf的源代码可以知道
视图函数仍然会被执行,只不过 self.user self.auth = None
所以 ...
下载安装cursor1https://cursor.com/cn
设置中文按shift + ctrl + x,搜索chinese,安装简体中文插件,然后重启就行
设置代理cursor里用的模型都是限制大陆使用的,所以要挂代理才行
点cursor设置
搜索proxy,然后把框里的两个都填上代理(根据你在用的代理去设置)
如果还不行的话,建议把这个也钩上,不过会降低速度
前后端分离什么是前后端分离程序角度:
1个django程序,接受请求 + 处理 + html模版 + 用户返回
2个程序:
前端:vue.js / react.js / angular.js
后端:django + django restframework
专业度角度来讲:
前端:专门写前端代码 + 部署 + 版本管理 + ajax请求获取
后端:API
APP或微信小程序:
前端:APP或者微信小程序
后端:API
什么是drf?作用是什么?drf让我们以后写后端API接口时更方便
安装drf123pip install djangopip install djangorestframework
初步编写APIdrf本质上是django的一个App,所以安装完以后要先注册才能使用
123456789INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes" ...
编程开发
未读Django介绍django是一个python的web框架,提供了很多组件,他的理念是约定大于配置,有点类似于java的spingboot。同类的还有fastapi和flask,他们更精简一些。
安装和创建项目使用pip安装
1pip install django
使用pycharm来创建django项目,注意模版文件夹这里删掉,不然会自己创建个template目录供你存放静态文件
默认的目录
12345678mysite├── manage.py 【项目的管理,启动项目、创建app、数据管理】【不要动】【***常常用***】└── mysite ├── __init__.py ├── settings.py 【项目配置】 【***常常修改***】 ├── urls.py 【URL和函数的对应关系】 【***常常修改***】 ├── asgi.py 【接收网络请求】【不要动】 └── wsgi.py 【接收网络请求】【不要动】
app然后创建app,这个app就是把大 ...
学无止境
未读前言海外vpn的节点地区非常多,有的解锁还做的很好
但是传统协议过墙比较差,我们可以用vpn的节点来落地,实现二者结合
本方法只要是支持openvpn使用vpn的都可以用,这里用expressvpn为例说明
安装openvpndebian可以直接安装
1apt install openvpn resolvconf
装完了查看服务是否正常启动
1systemctl status openvpn
安装vpn节点注册下expressvpn,然后打开这个页面
https://www.expressvpn.com/setup#manual
Setup这里的账号和密码要保存好,等下会用到
下面这里有它所有的节点,选择一个你要用到的,直接点击就可以下载openvpn文件了
我们下载到配置文件以后,添加以下内容
12route-nopullroute 0.0.0.0 128.0.0.0 net_gateway
然后我们重命名一下文件,把文件格式从.ovpn格式改成.conf格式
改好后上传到/etc/openvpn这个目录下
我们使用以下命令启动openvpn节点
1sys ...
前言在debian11上安装了mysql8,导入以前的项目发现一些问题,此处记录修改过程
安装mysql8安装依赖123sudo apt updatesudo apt install gnupg lsb-release wget
添加mysql apt存储库123wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.debdpkg -i mysql-apt-config_0.8.22-1_all.deb
这会出现一个配置对话框,让你选择mysql版本即可选择mysql8,其他都点ok即可
安装期间会出现一个root用户的初始密码,这个要记录下不然没法登陆了
报错解决如果看到类似的报错,表明APT无法验证MySQL仓库的GPG公钥,这通常发生在添加新仓库后没有导入该仓库的GPG公钥时。此外,当您尝试安装mysql-server包时,由于APT无法验证仓库的安全性,所以无法找到安装候选。
12Err:2 http://repo.mysql.com/apt/debian bullseye InRelease The f ...
创建用户新建一个用户
1useradd sftpuser
设置密码
1passwd sftpuser
设置配置文件先备份一下
1cp sshd_config sshd_config.back
注意这里的文件名是 sshd_config 不是 ssh_config
1nano /etc/ssh/sshd_config
注释这一行,不然跟底下添加的冲突
1#Subsystem sftp /usr/libexec/openssh/sftp-server
然后新指定sftp类型为系统自带的 internal-sftp
1Subsystem sftp internal-sftp
然后我们新增一个用户的设置
1234567#这行用来匹配用户Match User sftpuser#用 chroot 将用户的根目录指定到 /home/sftp,这样用户就只能在 /home/sftp 下活动 ChrootDirectory /home/sftp ForceCommand internal-sftp X11Forwarding no Allow ...
前言由于某些软件并没有增加开启启动的服务,很多时候需要手工添加,一般我们都是推荐使用 systemd 写个系统服务,但是对于一些简单的脚本或者懒人来说,添加命令到 /etc/rc.local 文件更方便,但是自从 Debian 9 开始,Debian 默认不带 /etc/rc.local 文件,而 rc.local 服务却还是自带的:
我们可以看到系统自带了服务
123456789101112131415161718192021222324root@debian:~# cat /lib/systemd/system/rc-local.service# SPDX-License-Identifier: LGPL-2.1-or-later## This file is part of systemd.## systemd is free software; you can redistribute it and/or modify it# under the terms of the GNU Lesser General Public License as published by ...
