Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Heroku在使用Django服务静态文件时遇到的问题_Django_Heroku_Amazon S3_Static - Fatal编程技术网

Heroku在使用Django服务静态文件时遇到的问题

Heroku在使用Django服务静态文件时遇到的问题,django,heroku,amazon-s3,static,Django,Heroku,Amazon S3,Static,我已经尝试了一段时间,在heroku的生产过程中提供静态文件,但它不起作用 我在Python2.7中使用Django 1.8 我试过很多东西: 更改静力学的路径 我使用了一个带有AWS s3的服务器,它会将带有collect static的StaticFile发送到服务器,但是当您打开页面时,它不会加载 我遵循了django文档以及herokus 我也尝试过这些解决方案: 还有很多其他的 我当前的静态设置是 AWS_STORAGE_BUCKET_NAME = 'BUCKET_NA

我已经尝试了一段时间,在heroku的生产过程中提供静态文件,但它不起作用

我在Python2.7中使用Django 1.8

我试过很多东西:

  • 更改静力学的路径
  • 我使用了一个带有AWS s3的服务器,它会将带有collect static的StaticFile发送到服务器,但是当您打开页面时,它不会加载
  • 我遵循了django文档以及herokus
我也尝试过这些解决方案:

还有很多其他的

我当前的静态设置是

AWS_STORAGE_BUCKET_NAME = 'BUCKET_NAME'
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_PRELOAD_METADATA = True
AWS_S3_SECURE_URLS = True
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = "https://%s/" % AWS_S3_CUSTOM_DOMAIN
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
模板示例

<!DOCTYPE html>
{% load static from staticfiles %}
<html>

<head>
<meta charset="UTF-8">
<title>TITLE</title>
</head>

<body>

  <img src="{% static "images/404.jpg" %}" alt="Page Not Found (404)."  style="position: absolute; left: 50%; top: 50%; margin-left: -285px; margin-top: -190px;">
  <img src="{% static "medcstatic/images/404.jpg" %}" alt="Page Not Found (404)." style="position: absolute; left: 50%; top: 50%; margin-left: -285px; margin-top: -190px;">

</body>

</html>

{%load static from staticfiles%}
标题
我的URL看起来像这样

urlpatterns = [..
]
if not settings.DEBUG:
    urlpatterns += (r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': settings.STATIC_ROOT}),
urlpatterns=[。。
]
如果不是settings.DEBUG:
urlpatterns+=(r'^static/(?P.*)$,'django.views.static.service',
{'document_root':settings.STATIC_root}),

如果有人能帮我的话,我会非常感激的。

所以我终于把它修好了,我想我应该把安斯威尔留在这里。 我基本上重播了整件事,并遵循这个链接

只需确保您在AWS中设置了正确的权限即可

{
"Statement": [
    {
      "Sid":"PublicReadForGetBucketObjects",
      "Effect":"Allow",
      "Principal": {
            "AWS": "*"
         },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::BUCKET-NAME/*"
      ]
    },
    {
        "Action": "s3:*",
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::BUCKET-NAME",
            "arn:aws:s3:::BUCKET-NAME/*"
        ],
        "Principal": {
            "AWS": [
                "USER-ARN"
            ]
        }
    }
]
}

以及正确的cors设置:

   <CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
   </CORSConfiguration>

*
得到
3000
授权

请展示一个链接到静态文件的模板示例。我添加了模板和url示例,如果你们还需要什么,请告诉我