网站的二次开发是什么意思,企业网站建设策划书方案范文,石家庄建网站挣钱优帮云,WordPress使用typecho主题这里写自定义目录标题 前置说明静态文件收集静态文件 使用django-storages来使Django集成Minio安装依赖settings.py测试收集静态文件测试媒体文件 前置说明
静态文件
Django默认的Storage是本地#xff0c;项目中的CSS、图片、JS都是静态文件。一般会将静态文件放到一个单独… 这里写自定义目录标题 前置说明静态文件收集静态文件 使用django-storages来使Django集成Minio安装依赖settings.py测试收集静态文件测试媒体文件 前置说明
静态文件
Django默认的Storage是本地项目中的CSS、图片、JS都是静态文件。一般会将静态文件放到一个单独的目录中以方便管理。在html页面中调用时也需要指定静态文件的路径Django中提供了一种解析的方式配置静态文件的路径。静态文件可以放在项目根目录下也可以放在子应用的目录下由于有些静态文件在项目中是通用的所以推荐放在项目的根目录下方便管理。 为了提供静态文件需要配置两个参数
STATICFILES_DIRS[]存放查找静态文件的目录接收的是listSTATIC_URL访问静态文件URL前缀。
# 1. 静态文件的路由
STATIC_URL /static/# 2. 访问静态文件时会遍历列表中的文件夹找到对应的静态文件
STATICFILES_DIRS [os.path.join(BASE_DIR, static_files)]
# 配置静态文件夹路径 未来可能会有很多静态文件夹都在这里配置# 3.访问的地址:127.0.0.1:8000/static/xxxx在生产环境下即DebugFalse时Django将不再对外提供静态文件而需要使用collectstatic命令收集静态文件并交由静态文件服务器来提供服务。
收集静态文件
我们需要收集项目中的静态文件并放到静态文件服务器中一般使用Nginx服务器作为静态文件服务器。 在settings.py中设置收集静态文件的目录
# 这是Django默认存储的配置下面使用Minio就用不到这个配置了
STATIC_ROOT os.path.join(os.path.dirname(BASE_DIR), staticfiles)执行收集静态文件命令该命令会将项目中所有的静态文件复制到第一步建的目录下。
python manage.py collectstatic使用django-storages来使Django集成Minio
安装依赖
为什么使用django-storages而不使用django-storages-minio、django-minio因为Github上的star没有django-storages多而且PyPi上也已经没有版本迭代了最重要的是照着资料配置最后都没成功。django-storages好像是官方的组件。 Minio和AmazonS3的API完全兼容所以直接使用Amazon S3的API即可官方文档https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#
# 安装依赖
pip instll django-storages[s3] minio需不需要“[s3]”没有详细的测试多按一个包也没几兆。
settings.py
注意桶需要自己创建好。
# 注册应用
INSTALLED_APPS [# ...... storages,# ......
]STATIC_URL /static/ # 静态文件的路由
MEDIA_URL /media/ # 媒体文件的路由
STORAGES {# default是媒体文件的配置default: {BACKEND: storages.backends.s3.S3Storage, # 替换Djangpo默认的StroageOPTIONS: {access_key: root, # Minio账号secret_key: 123456, # Minio密码bucket_name: data-monitor, # Minio中桶名称需要自己创建file_overwrite: False, # 同名文件是否允许覆盖use_ssl: False, # 是否使用HttpsFalse就是使用Httpendpoint_url: http://127.0.0.1:9000, # Minio服务地址# location: media # 指定媒体文件的MEDIA_ROOT不指定就是桶的根目录},},# staticfiles是静态文件的配置staticfiles: {BACKEND: storages.backends.s3.S3Storage, # 替换Djangpo默认的StroageOPTIONS: {access_key: root,secret_key: 123456,bucket_name: data-monitor, # Minio中桶名称程序不能自动创建file_overwrite: False,use_ssl: False,endpoint_url: http://127.0.0.1:9000,location: staticfiles, # 收集静态文件到哪个目录不指定默认在桶根目录下},},
}测试收集静态文件
python manage.py collectstatic通过静态路由访问静态文件http://127.0.1:5002/static/admin/img/calendar-icons.svg可以直接将文件展示出来。
测试媒体文件
创建一个子应用在子应用的models.py中创建一个模型类过程略。
class MyModel(models.Model):title models.CharField(max_length255)# settings中没有配置MEDIA_ROOT的路径默认就是桶的根目录# 这里指定的是上传到MEDIA_ROOT的哪个文件夹中# 即“MEDIA_ROOT/upload_to”路径会自动创建file models.FileField(upload_tomedia/) # 加不加最后的/都可以将模型注册到Django Admin中在admin.py中配置
admin.register(models.MyModel)
class MyModelAdmin(admin.ModelAdmin):pass迁移模型类
python manage.py makemigrations
python manage.py migrate访问Django Admin找到刚才的模型类点击Add创建一条新纪录。 去Minio上查看自动创建了media目录目录中多了刚才选中的文件。