用于直接S3上传的django小部件库

joist的Python项目详细描述


托梁

PyPI version shields.io

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),使用以下设置

KeyDescription
AWS_ACCESS_KEY_IDYour Amazon Web Services access key, as a string.
AWS_SECRET_ACCESS_KEYYour Amazon Web Services secret access key, as a string.
AWS_S3_REGION_NAMEName of the AWS S3 region to use (eg. eu-west-1)
AWS_STORAGE_BUCKET_NAMEYour 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:8000http://localhost:8000/admin运行

blob表单示例:

cd example-client
npm run serve

-->;在http://localhost:8080运行

释放

pipenv shell
pip install bumpversion
bumpversion minor

TODO:npm发布

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无法在Netbeans 8.2 JDK8u231中创建java Maven项目(Web应用程序)   java如何以设定的时间间隔生成随机数?   java从socket和inputStream的慢速读取   spring SCORM:Java中基于Web的SCORM播放器   Java将函数传递给方法   java绑定通用服务及其实现和子类型   java如何在运行时从选择列表框中动态选择选项?爪哇硒   java Selenium WebDriver什么是“Selenium客户端和WebDriver语言绑定”   elasticsearch需要elasticsearch高级Java客户端更新ByQueryRequest API帮助   JAVA哈希表查找最大值   WSDL操作中的java soapAction属性为空   java访问封闭类或父类方法的一般方法   eclipse在java中运行带有SeleneTestCase的ANT。lang.NoClassDefFoundError   java Hazelcast不会在节点启动时填充ReplicatedMap   如何在Java中从excel中读取特定行?   html JAVA将本地时间(GMT+8)转换为UTC时间   java将自定义端点添加到Spring数据REST存储库中,并以大摇大摆的方式显示   java计算未来位置