【问题标题】:HTML image not found (django)找不到 HTML 图像(django)
【发布时间】:2020-04-29 22:53:52
【问题描述】:

我一直面临这个问题,我收到错误消息,告诉我找不到图片,并且我在网站上看到了破解图片。我将附上代码,包括目录以及出现错误的终端。

【问题讨论】:

  • 因为它试图在静态文件夹中查找
  • 其实你需要了解python manage.py collectstatic以及settings.py中的静态url才能从静态文件夹中传递你的静态文件
  • 所以我在 imgs/model.png 之前添加了静态,它完全有效,感谢您的提醒!
  • 请把我标​​记为答案
  • 这能回答你的问题吗? django not displaying image

标签: html django


【解决方案1】:

将静态文件夹添加到您的网址,它会工作 你还需要了解 Python manage.py collectstatic 用于设置 py 下静态文件的生产级交付

【讨论】:

  • 还有一个问题,从 css 文件中设置图像的样式,它与普通的有什么不同吗?因为我现在正在尝试它并没有改变任何东西。
  • 确保将类添加到 img 标签。并且 css 也在静态文件夹下,该文件夹正在加载到您的基本 html 中,以便 css 在运行时可用
  • ` ` 这是 img 标签,这是 css model21 类,但我看到了还没有变化。 .model21{... }
  • 您能否在浏览器的源代码中验证是否正在传递 css 文件,如果是,请尝试清除缓存并重新加载 css
【解决方案2】:

这是因为 Django 使用服务器,它需要知道在哪里查找文件以及在哪里提供文件。

默认情况下,它会查找名为“static”的文件夹,因此您应该创建一个名为“static”的目录并将图像放在那里

然后在 settings.py 中定义 Django 为这些文件提供服务的路径:

STATIC_URL = '/static/' 

当您需要向模板添加图像时,您应该添加以下代码:

{% load static %}

<img src="{% static "my_app/example.jpg" %}" alt="My image">

{% load static %} 只需要在模板文件顶部调用一次。

https://django.readthedocs.io/en/2.2.x/howto/static-files/

【讨论】:

    【解决方案3】:

    在 Web 应用程序中,除了业务逻辑和数据处理之外,我们还需要处理和管理 CSS、JavaScript、图像等静态资源。 管理这些资源很重要,以免影响我们的应用程序性能。 Django 非常高效地处理它,并提供了一种方便的资源使用方式。

    要提供静态文件,请遵循以下步骤。 在 settings.py 中添加以下内容

    settings.py

    #STATIC_URL: specifies what to append when you call `{% static %}` as template tag. 
    STATIC_URL = '/static/'
    
    #STATIC_ROOT: specifies where exactly you yourself will put your static files
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticroot')
    
    #STATICFILES_DIRS: it tells Django where to look for static files while 
    #serving a request. 
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),
    ]
    

    之后在项目的根目录下创建一个staticroot 目录。然后把你所有的javascript,css,images放在那里并运行以下命令。

    python manage.py collectstatic
    

    此命令会将所有文件收集到/static/ 文件夹中。

    现在在开发过程中为您的静态文件添加以下内容到您的主 urls.py

    urls.py

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # Your URL configs
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    之后,您可以在任何地方使用您的静态文件。 例如:您需要在模板中添加背景图片,您应该添加以下代码

    template.html

    <!--{% load static %} should be always top of your template file. It tells 
    Django to load your static files inside template. -->
    {% load static %}
    
    <!--{% static 'resource_url' %} means STATIC_URL+'resource_url'. (STATIC_URL 
    defined inside your settings.py) -->
    <img src="{% static "my_app/example.jpg" %}" alt="My image">
    

    这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2017-04-15
      • 1970-01-01
      • 2019-05-18
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多