Web Services 从静态文件夹加载文件时出现问题

vs91vp4v  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(282)

我是django的新手,在 YouTube 上学习教程时遇到了问题。请帮助我,这样我的静态页面(我将其更改为动态页面)将加载我所做的更改。除了我尝试使用{% static %}运行它时,一切都正常。我还告诉系统有关静态的东西通过{% load static %},但它不显示图片,我试图显示通过静态文件夹。

摘要

1.网页上未显示图片。
1.静态文件夹中的文件不可用。

ogsagwnx

ogsagwnx1#

我不确定你的问题是什么,但据我所知,你试图在一个django模板中使用静态文件夹中的图片。这可以通过正确配置django和使用模板标签来实现。

开发中

要在开发服务器上使用此功能,您需要在每个应用的文件夹中创建一个名为static的文件夹。例如,项目的文件结构可能如下所示:

project
   |_ project
   |_ app
      |_ static
         |_ app
            |_ image.png
      |_ templates
         |_ app
            |_ home.html
      |_ __init__.py
      |_ admin.py
      |_ models.py
      |_ tests.py
      |_ urls.py
      |_ views.py
   |_ db.sqlite3
   |_ manage.py

然后,您只需在模板home.html的文件开头添加{% load static %},并在任何需要使用图像的地方使用{% static "app/image.png" %},即可访问图像。注意,此模板标签基本上为您提供了要显示的静态文件的url。因此,实际上,您应该像这样插入图像:

<img src="{% static 'app/image.png' %}" />

生产中

在生产中,我们需要将不同应用的所有静态文件收集到一个公共位置,这样服务器就可以轻松地找到它们。我们使用django应用staticfiles来实现这一点,我们可以在settings.py文件中配置它。

settings.py的第一个字符串

确保settings.py包含以下行

from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

INSTALLED_APPS = [
  ...
  'django.contrib.staticfiles',
  ...
]

STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'

您可以将'static/'替换为任何您希望作为静态URL的内容。您可以将STATIC_ROOT中的'staticfiles'替换为您将在其中收集静态文件的根文件夹的名称。此文件夹必须(在此配置下)位于项目的基目录中,即您的数据库所在的同一文件夹(db.sqlite3)。例如:

project
   |_ project
   |_ app
   |_ staticfiles
   |_ db.sqlite3
   |_ manage.py

运行python3 manage.py collectstatic时,项目中每个应用的所有静态文件都将被复制到STATIC_ROOT目录中,因此它们都可以从同一个位置访问。

project
   |_ project
   |_ app
   |_ staticfiles
      |_ app
         |_ image.png
   |_ db.sqlite3
   |_ manage.py

最后,您必须告诉您的生产服务器staticfiles目录的位置,然后您就可以开始了(如何执行此操作取决于您使用的托管服务)。
希望这对你有帮助!

相关问题