django - 尝试使用 AWS S3 将 Django React 应用程序部署到 Heroku 时出现错误的 STATIC_URL
问题描述
我已经为静态文件设置了一个 S3 存储桶。一切都在本地工作,但是当我尝试部署应用程序时,STATIC_URL总是被覆盖,并且它使用同一页面上的静态路径。
生产.py
import os
from dotenv import load_dotenv
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent.parent
# Load dotenv
load_dotenv()
DEBUG = os.getenv('DEBUG_VALUE')
SECRET_KEY = os.getenv("SECRET_KEY")
USE_S3 = os.getenv('USE_S3')
BUCKET_URL = os.getenv('REACT_APP_BUCKET_URL')
# Server is running in production
if DEBUG == 'FALSE':
# HTTPS settings
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
# HSTS settings
SECURE_HSTS_SECONDS = 31536000 # 1 year
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
# S3 bucket config
if USE_S3 == 'TRUE':
MEDIA_URL = '/media/'
STATIC_URL = BUCKET_URL + '/static/'
MEDIA_ROOT = BUCKET_URL + '/static/images/'
AWS_ACCESS_KEY_ID = os.getenv('ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.getenv('STORAGE_BUCKET_NAME')
AWS_S3_CUSTOM_DOMAIN = os.getenv('CUSTOM_DOMAIN')
AWS_LOCATION = 'static'
#AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage'
else:
MEDIA_URL = '/media/'
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR / 'public' / 'static' / 'images')
解决方案
推荐阅读
- java - 如何根据json数组长度在对话框中添加动态复选框?
- ios - .observe firebase 方法 swift4 后代码未执行
- android - android中的拖放布局
- php - Php rabbitMq 消耗守护进程失败并出现 mysql 损坏管道错误
- elasticsearch - 如何在弹性云中启用跨集群复制
- php - PDO exec 默默地失败了查询似乎是合法的
- powerbi - PowerBI 中的拼写检查
- docker - 如何在容器中运行命令的两个实例?
- python - 分别在烧瓶中处理多个客户端请求?
- python - 无法在 mac 上安装 Multicorn