我是django的新手,在 YouTube 上学习教程时遇到了问题。请帮助我,这样我的静态页面(我将其更改为动态页面)将加载我所做的更改。除了我尝试使用{% static %}运行它时,一切都正常。我还告诉系统有关静态的东西通过{% load static %},但它不显示图片,我试图显示通过静态文件夹。
django
{% static %}
{% load static %}
1.网页上未显示图片。1.静态文件夹中的文件不可用。
ogsagwnx1#
我不确定你的问题是什么,但据我所知,你试图在一个django模板中使用静态文件夹中的图片。这可以通过正确配置django和使用模板标签来实现。
要在开发服务器上使用此功能,您需要在每个应用的文件夹中创建一个名为static的文件夹。例如,项目的文件结构可能如下所示:
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。因此,实际上,您应该像这样插入图像:
home.html
{% static "app/image.png" %}
<img src="{% static 'app/image.png' %}" />
在生产中,我们需要将不同应用的所有静态文件收集到一个公共位置,这样服务器就可以轻松地找到它们。我们使用django应用staticfiles来实现这一点,我们可以在settings.py文件中配置它。
staticfiles
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)。例如:
'static/'
STATIC_ROOT
'staticfiles'
db.sqlite3
project |_ project |_ app |_ staticfiles |_ db.sqlite3 |_ manage.py
运行python3 manage.py collectstatic时,项目中每个应用的所有静态文件都将被复制到STATIC_ROOT目录中,因此它们都可以从同一个位置访问。
python3 manage.py collectstatic
project |_ project |_ app |_ staticfiles |_ app |_ image.png |_ db.sqlite3 |_ manage.py
最后,您必须告诉您的生产服务器staticfiles目录的位置,然后您就可以开始了(如何执行此操作取决于您使用的托管服务)。希望这对你有帮助!
1条答案
按热度按时间ogsagwnx1#
我不确定你的问题是什么,但据我所知,你试图在一个
django
模板中使用静态文件夹中的图片。这可以通过正确配置django和使用模板标签来实现。开发中
要在开发服务器上使用此功能,您需要在每个应用的文件夹中创建一个名为
static
的文件夹。例如,项目的文件结构可能如下所示:然后,您只需在模板
home.html
的文件开头添加{% load static %}
,并在任何需要使用图像的地方使用{% static "app/image.png" %}
,即可访问图像。注意,此模板标签基本上为您提供了要显示的静态文件的url。因此,实际上,您应该像这样插入图像:生产中
在生产中,我们需要将不同应用的所有静态文件收集到一个公共位置,这样服务器就可以轻松地找到它们。我们使用
django
应用staticfiles
来实现这一点,我们可以在settings.py
文件中配置它。settings.py
的第一个字符串确保
settings.py
包含以下行您可以将
'static/'
替换为任何您希望作为静态URL的内容。您可以将STATIC_ROOT
中的'staticfiles'
替换为您将在其中收集静态文件的根文件夹的名称。此文件夹必须(在此配置下)位于项目的基目录中,即您的数据库所在的同一文件夹(db.sqlite3
)。例如:运行
python3 manage.py collectstatic
时,项目中每个应用的所有静态文件都将被复制到STATIC_ROOT
目录中,因此它们都可以从同一个位置访问。最后,您必须告诉您的生产服务器
staticfiles
目录的位置,然后您就可以开始了(如何执行此操作取决于您使用的托管服务)。希望这对你有帮助!