Django模型小记
最近开始看python,稍微看了点基础语法就开始看Django撸个简单的留言板。
跟着2.1中文文档来走,首先会在model这里比较花时间,因为跟php部分框架的model不太一样;
文档开始虽然没细讲,但还是会不自主去深入了解下模型关系等高级方法。
最近开始看python,稍微看了点基础语法就开始看Django撸个简单的留言板。
跟着2.1中文文档来走,首先会在model这里比较花时间,因为跟php部分框架的model不太一样;
文档开始虽然没细讲,但还是会不自主去深入了解下模型关系等高级方法。
之前在Laravel框架自带的ORM封装查询方法时
假如$query是模型对象
$query->where('id' , 1);
$query->where('source_id' , 1);
return $query;
dd($query->get());
在某些前人封装的查询方法里是可以使用到条件的。
看了下源码发现select,where等方法是在Illuminate\Database\Eloquent\Builder里,返回的是$this
而刚实例化模型后是先返回继承了Illuminate\Database\Eloquent\Model的对象,此时还没实例化Builder
此时只需要做一次
$query = $query->slecet(['id','name','...']);
触发Builder里的方法(也包括where、orderBy等),然后$query此时就已经把Builder实例化,
可以无需赋值直接$query->where('id' , 1),具体为什么无需赋值后面再研究下。
一般本地或者服务器拉代码直接输入密码即可,不过我这边是gitlab通过webhook运行脚本来拉代码,所以还是要设置为无需passphrase。
通过ssh-keygen -p可以重置passphrase 回车为不需要passphrase。
另一个方案是使用ssh-add,适合在本地或者远程ssh工具操作
ssh-add后把passphrase输入一下,当前用户之后就不需要再输入了
但不是永久性,是放到缓存区,服务器重启会失效。
Laravel版本:5.6
在项目中打算开一个新的模块叫App,
我们是用二级域名来区分模块,所以先通过app\Providers\RouteServiceProvider的map()中先对当前$_SERVER['HTTP_HOST']进行匹配,然后设置相应的namespace、domain、middleware以及路由文件。
因为之前没搞清楚Laravel的Session运行原理,所以在这里并没有设置中间件。
之前发布过一篇是搭建好Aria2和WebUi,用Rclone挂载网盘,Aria2下载完成后触发脚本通过mv命令把文件移动到网盘那。
但是搭建后使用起来问题一大堆。
首先是卡,内存占用太高,原因分析之前看到一个论坛的回复有讲,之后再找。
其次是慢,1G的小鸡+3G的swap把一个1G的文件移动到挂载的onedirve网盘可能得耗费大半个小时,这还是单个文件,如果零散的文件感觉得两个小时或以上,如果是国内下载软件有资源的话,本次离线下载任务可以说是没任何收益。
然后最近在github找到一个比较有意思的项目【oneindex】
主要是读取你网盘的文件列表并展示出来供任何人进行下载,在线观看,图片上传(后台开启)
部署很简单,无需数据库,代码拉过来加个定时任务即可,有需要缓存可以使用Redis。
第一次运行需要安装,安装主要是跳到onedrive授权页面获取clinet_id,clinet_secert并写到配置文件里就可以用onedrive的api了。
整个项目功能其实并不复杂,不过可能需要比较熟悉onedirve的开发文档。
另外一个有意思的地方是,作者在根目录写了个命令工具类似Laravel的Artisan,里面有上传文件,文件夹的功能。
无论是命令工具还是项目后台进行上传,速度和性能优于之前的方案很多。
试了下使用oneindex在VPS传一部8G的电影到onedirve网盘,用了15分钟,内存使用保持在20~23%,