从该主题上类似标题的数量来看,这似乎是一个令人困惑的来源,但是尝试了我在 django 开发服务器上在静态文件上能找到的所有内容,我几乎放弃了希望!
所以我的静态文件是从 C:/Users/Dan/seminarWebsite/static/ 提供的,其中我有图像、css 等的子文件夹。
设置:
STATIC_ROOT = 'C:/Users/Dan/seminarWebsite/static/'
STATIC_URL = '/static/'
静态文件应用程序也处于活动状态。
网址:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
模板:
"{{ STATIC_URL }}images/vision.jpeg"
但是,仅出现一个损坏的链接,并且位于此地址:
http://127.0.0.1:8000/homepage/images/vision.jpeg
,我认为它不应该位于该地址(主页是调用静态图像文件的页面的 URL 名称)。
django.contrib.staticfiles
的文档。我同意,文档可能很难理解,尤其是对于 django 新手来说。
我相信这种混乱源于以下事实:
django.contrib.staticfiles
有两种操作模式:
STATIC_URL
STATIC_ROOT
定义),以便可以使用适合静态文件的网络服务器托管静态文件。此整理是使用 python ./manage.py collectstatic
完成的。以下是如何启动和运行的快速摘要。我还没有机会尝试,所以可能会有错误。希望这将帮助您入门,并至少帮助您理解文档。如有疑问,请参阅文档。
确保
'django.contrib.staticfiles'
中有 INSTALLED_APPS
。这将是托管静态文件的路径。
STATIC_URL = '/static/'
staticfiles
将在每个已安装应用程序的
static/
目录以及 STATICFILES_DIRS
中定义的目录中查找文件。 (此行为取决于
STATICFILES_FINDERS
中列出的后端)。 在您的情况下,您可能希望在
STATICFILES_DIRS
:中指定您的目录
STATICFILES_DIRS = (
'C:/Users/Dan/seminarWebsite/static/',
)
urls.py
的 end 使视图可访问:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
DEBUG = True
中有
settings.py
。
如果您运行开发服务器 (
./manage.py runserver
),您应该能够通过
http://localhost:8000/static/images/vision.jpeg
(服务于 C:/Users/Dan/seminarWebsite/static/images/vision/jpeg
)访问您的文件。链接到模板中的静态文件
,以及使 STATIC_URL
可访问您的模板。既然您已经尝试过后者,我们将坚持下去。
'django.core.context_processors.static'
中有
TEMPLATE_CONTEXT_PROCESSORS
。如果您还没有重新定义 TEMPLATE_CONTEXT_PROCESSORS
,则 无需执行任何操作,因为 默认情况下它应该在那里。 确保在渲染模板时使用
您现在应该能够在您的
my_template.html
<a href="{{ STATIC_URL }}images/vision.jpeg" />
在生产服务器上托管静态文件。如果您需要提供的所有静态文件都存储在该目录中 (
C:/Users/Dan/seminarWebsite/static
/static/
(或您设置
STATIC_URL
的任何内容)上托管该目录,就可以开始了。
如果您的文件分散在不同的目录和/或应用程序特定的静态文件中,那么您需要整理它们。将 我想分享我对当地开发的收据。这与 Shawn Chin 的答案类似,
DEBUG=True
和特殊的 urlpatterns,我认为这更通用和干净。
第1、2、3点与答案中相同,但以下不同:以相同的方式为所有环境提供 URL:
# main urls.py
urlpatterns = (
[
# URLs from apps are here
...
]
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
)
与 Django 4.2 相关