Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django静态文件上传到AmazonS3中的文件夹,该文件夹可以';找不到_Python_Django_Amazon Web Services_Amazon S3 - Fatal编程技术网

Python Django静态文件上传到AmazonS3中的文件夹,该文件夹可以';找不到

Python Django静态文件上传到AmazonS3中的文件夹,该文件夹可以';找不到,python,django,amazon-web-services,amazon-s3,Python,Django,Amazon Web Services,Amazon S3,我正在尝试设置Django,以便将所有静态文件上载到s3,但无论出于何种原因,它都不起作用。以下是settings.py中的相关部分: AWS_存储_BUCKET_NAME=“BUCKET_NAME” AWS\u访问\u密钥\u ID=os.environ.get(“AWS\u访问\u密钥\u ID”) AWS\u SECRET\u ACCESS\u KEY=os.environ.get(“AWS\u SECRET\u ACCESS\u KEY”) AWS_S3_文件_覆盖=False AWS\

我正在尝试设置Django,以便将所有静态文件上载到s3,但无论出于何种原因,它都不起作用。以下是
settings.py
中的相关部分:

AWS_存储_BUCKET_NAME=“BUCKET_NAME” AWS\u访问\u密钥\u ID=os.environ.get(“AWS\u访问\u密钥\u ID”) AWS\u SECRET\u ACCESS\u KEY=os.environ.get(“AWS\u SECRET\u ACCESS\u KEY”) AWS_S3_文件_覆盖=False AWS\u S3\u地区\u NAME=“us-east-2” AWS_S3_自定义_域=( f“{AWS_STORAGE_BUCKET_NAME}.s3.{AWS_s3_REGION_NAME}.amazonaws.com” ) AWS_S3_ENDPOINT_URL=f“https://{AWS_S3_CUSTOM_DOMAIN}” AWS_LOCATION=“静态” STATIC_URL=f“{AWS_S3_ENDPOINT_URL}/{AWS_LOCATION}/” STATICFILES\u STORAGE=“storages.backends.s3boto3.s3boto3存储” 假设我的bucket被称为bucket\u name,将会发生以下情况:

  • 在我的bucket\u name bucket中,将有一个名为“bucket\u name”的文件夹,其中包含一个静态文件夹,其中包含我的所有文件
  • 在服务器上,不会加载任何资产。这是因为他们在寻找url,而url是用英文写的
我如何让django资产使用这个新地址,或者在aws上更改地址使其与django对齐

我做了一些事情来调试这个

  • 看起来,如果在所有这些行之后重新定义
    AWS\u STORAGE\u BUCKET\u NAME
    ,所有的变化就是文件夹名称将从BUCKET\u NAME更改为其他名称。除了我不想重命名这个文件夹之外,我想完全删除它或者让django理解这个文件夹
  • 更改
    STATICFILES\u存储
    似乎没有任何作用,除非将其删除,否则会导致错误
  • 更改
    AWS\u位置
    只需将文件夹更改为bucket\u name//static,对基本文件夹没有影响。这将使资产使用/static,但bucket\u名称仍然不存在
  • 暂时删除我的bucket策略不会解决任何问题

我想我的问题与这里的问题相似或相同:。但它没有找到解决方案。

我的问题是,我同时使用了
AWS\u S3\u自定义\u域
AWS\u S3\u端点\u URL
。我只能选一个

当指定了
AWS\u S3\u CUSTOM\u DOMAIN
而不是
AWS\u ENDPOINT\u URL
时,S3将包含一个符合
AWS\u位置的文件夹,因此在我的情况下,静态文件存储在中。Django将访问此URL并找到资产

如果指定了
AWS\u S3\u端点\u URL
,而不是
AWS\u S3\u自定义\u域
,则S3将包含一个具有bucket名称的文件夹,其中包含符合
AWS\u位置的文件夹
。这样我就可以用。Django将再次能够访问这个URL,正如预期的那样

当我同时拥有两者时,问题就出现了。django上将使用
AWS\U S3\U CUSTOM\U domain
的域,S3上将使用
AWS\U S3\U ENDPOINT\U URL
,从而导致我的断开连接