原因macos会默认对app或者安装包的应用签名进行一个校验,如果你的app不是正常签名
例如破解版本或者个人开发的,可能就会提示app已损坏
这时候我们只要自己签名一下即可
签名intel cpu的mac在终端中运行以下命令:(name.app就是需要更改签名的程序)
1sudo codesign --force --deep --sign - /Applications/name.app
M cpu的mac123sudo xattr -rd com.apple.quarantine /Applications/name.appcodesign --force --deep --sign - /Applications/name.app
注意事项这里尤其要注意的是 /Applications/name.app 就是我们要签名的app名字
因为Mac是类unix系统,如果app名字里有空格是需要\转译一下的
如果不明白的话,可以直接把app图标拖进终端里会自动生成路径和名字
还有如果提示需要安装Xcode的话我们就安装一下,或者直接运行下面命令安装
1xcod ...
作用之前使用 request.data 获取请求体中的数据。
这个 reqeust.data 的数据怎么来的呢?其实在drf内部是由解析器,根据请求者传入的数据格式 + 请求头来进行处理。
JSONParser
FormParser
MultiPartParser(*)既可以上传文件,也可以上传数据
12345678910111213141516<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="http://127.0.0.1:8000/test/" method="post" enctype="multipart/form-data"> <input type="text" ...
作用限流,限制用户访问频率,例如:用户1分钟最多访问100次 或者 短信验证码一天每天可以发送50次, 防止盗刷。
对于匿名用户,使用用户IP作为唯一标识。
对于登录用户,使用用户ID或名称作为唯一标识。
思路如何限制? 假如10分钟3次
“9123123”:[16:45, 16:43, 16:42]
1.获取当前时间 16:45
2.当前时间 - 10分钟 = 计数开始时间 16:35
3.删除小于计数时间的
4.计算长度 :超过,错误;未超过,访问
使用SimpleRateThrottle直接实现了上面的限流思路,所以我们不继承Throttle而是直接继承SimpleRateThrottle方法。
限流需要记录每次成功访问接口的时间,所以需要缓存,我们这里设置redis为默认缓存并使用。
1234567891011121314151617181920212223242526272829303132333435363738from rest_framework.views import APIViewfrom rest_framework.response import ...
作用在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 ...