用于直接S3上传的django小部件库
joist的Python项目详细描述
托梁
Joist是一个Django小部件库,用于通过浏览器而不是通过服务器直接上传s3bucket。它为S3文件存储扩展了django-storages库
安装
pip install django-storages joist
按来源:
^{pr2}$配置
Joist依赖于django storages S3配置(请参见https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html),使用以下设置
Key | Description |
---|---|
AWS_ACCESS_KEY_ID | Your Amazon Web Services access key, as a string. |
AWS_SECRET_ACCESS_KEY | Your Amazon Web Services secret access key, as a string. |
AWS_S3_REGION_NAME | Name of the AWS S3 region to use (eg. eu-west-1) |
AWS_STORAGE_BUCKET_NAME | Your Amazon Web Services storage bucket name, as a string. (required) |
附加设置
^{tb2}$使用
设置
将joist
添加到已安装的应用程序列表中:
settings.py
:
INSTALLED_APPS=[...'rest_framework','rest_framework.authtoken','joist',]
此外,由于字段需要其他REST端点,因此必须使用将它们添加到urlpatterns
:
urls.py
urlpatterns=[...path('api/joist/',include('joist.urls')),]
模型定义:
而不是
photo=models.FileField()
使用
fromjoist.modelsimportS3FileFieldphoto=S3FileField()
结果是,一旦用户在文件选择器中选择了一个文件,它将自动上载到客户端的S3。在
信号
当调用其REST api时,Joist发出两个信号:
joist_upload_prepare(name:str,object_key:str)joist_upload_finalize(name:str,object_key:str,status:string)
发展环境
要求
- 地形
- AWS命令行
- Python 3.7
- 节点
初始AWS
登录AWS Concole并创建API访问密钥
aws configure
运行Terraform
cd terraform
terraform init
terraform workspace new <NAME>
terraform apply
创建环境文件
cd terraform
terraform output > ../example/.env
注:
- 编辑
.env
文件并删除=
字符周围的空白
Init Django和Python Repo
pipenv --python=3 pipenv install -r requirements.txt example/requirements.txt pip install -e . cd example ./manage.py migrate ./manage.py createsuperuser
初始化回购预提交
pipenv shell pip install pre-commit pre-commit install
初始化小部件客户端
cd client
npm install
npm run dev
初始化测试Vue客户端
cd example-client
npm install
托多
cd example
./manager.py runserver
-->;在http://localhost:8000和http://localhost:8000/admin运行
blob表单示例:
cd example-client
npm run serve
-->;在http://localhost:8080运行
释放
pipenv shell pip install bumpversion bumpversion minor
TODO:npm发布
- 项目
标签: