【问题标题】:Serving static images on django application?在 django 应用程序上提供静态图像?
【发布时间】:2015-12-29 01:09:26
【问题描述】:

我一直无法弄清楚如何使用我的 django 应用程序提供静态图像。然而,我想出了一种“破解”来让它工作,但它并没有带来太大的灵活性。

html 文件中我尝试了以下...

<img src="{{ STATIC_URL }}textchange/nextarrow.png" class="foobar" id="foobar">

以上:当我使用它时页面会加载,但图像不起作用。

&lt;img src="{% static "textchange/nextarrow.png" %}" class="foobar" id="foobar">

以上:页面无法加载,出现服务器错误

<img src="thefullurltoS3bucket/nextarrow.png" class="foobar" id="foobar">

以上:图片可以正常加载

在使用 Heroku 和 S3 进行生产时,我一直在尝试所有这些不同的格式。我的问题是我提供静态图像的方式是否正确?我使用最后一个示例,在该示例中,我将 src 设为 s3 存储桶的完整 url。可以吗?

应该注意的是,当我使用为 css 文件提供服务的静态标签时工作正常。图片是唯一的问题。

【问题讨论】:

    标签: django amazon-s3 django-staticfiles


    【解决方案1】:

    您的第一个和第二个解决方案(您遇到服务器错误且未加载)是使用静态文件的正确方法,即:

    <img src="{% static "textchange/nextarrow.png" %}" class="foobar" id="foobar">
    

    查看您的settings.py 文件并设置STATIC_URLSTATIC_DIRS 以及STATIC_ROOT,如果您遇到服务器错误,可能您设置了STATIC_URLSTATIC_DIRS 错误。你可以找到很多关于这些设置的帖子。

    还要在浏览器中检查您的图片网址(例如127.0.0.1:8000/static/files/etc.jpg),看看您是否可以访问该图片。

    【讨论】:

      【解决方案2】:

      在 Django 中提供静态文件可能会很痛苦。

      首先,确保您在模板中正确使用了静态模板标签:

      {% load static from staticfiles %}
      
      <img src="{% static 'path/to/image.jpg' %}">
      

      在您的设置中,让您的 STATIC_URL 指向类似“/static/”的东西,您的 STATIC_ROOT 指向您在收集静态后实际提供文件的目录,以及您的 STATIC_DIRS 指向您的位置'将你的静态文件放在你的项目中(即'static'目录)。

      如果您从 S3 服务,您可能会follow a tutorial like this one

      【讨论】:

        猜你喜欢
        • 2020-09-11
        • 2011-06-02
        • 2021-12-31
        • 2016-12-23
        • 2018-11-20
        • 2014-04-12
        • 2012-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多