从关于这个主题的类似标题的数量来看,这似乎是一个混乱的来源,然而,我几乎放弃了希望,尝试在django开发服务器的静态文件上找到的一切
因此,我的静态文件是从C:/Users/Dan/seminarWebsite/static/提供的,其中有用于图像、css等的子文件夹
设置:
STATIC\u ROOT='C:/Users/Dan/seminarWebsite/STATIC/'
静态URL='/STATIC/'
静态文件应用程序也处于活动状态
url:
来自django.contrib.staticfiles.url的
导入静态文件\u urlpatterns
urlpatterns+=静态文件\u urlpatterns()
模板:
“{{STATIC_URL}}images/vision.jpeg”
但是,只有断开的链接出现在该地址:http://127.0.0.1:8000/homepage/images/vision.jpeg,我认为它不应该位于该地址(homepage是调用静态图像文件的页面的url名称)
根据您到目前为止发布的内容,您似乎正在关注django.contrib.staticfiles的文档。我同意这些文件可能很难遵循,特别是如果django是新手的话
我相信这种混淆源于这样一个事实,django.contrib.staticfiles有两种操作模式:
- 在使用开发服务器的开发阶段,它会在预定义的目录中动态搜索静态文件,并在
static\u URL - 对于部署,它帮助将静态文件整理到单个目录(使用
static\u ROOT定义),以便可以使用适合静态文件的Web服务器托管静态文件。此排序是使用python./manage.py collectstatic完成的
这里有一个关于如何启动和运行的快速总结。我没有机会尝试,所以可能会有错误。希望这能帮助你开始,至少能帮助你理解文档。如有疑问,请参阅文件
在开发服务器上托管静态文件
-
确保在
已安装的应用程序中有'django.contrib.staticfiles' -
指定
静态URL。这将是静态文件所在的路径STATIC\u URL='/STATIC/' -
确保您的文件位于正确的目录中。默认情况下,
staticfiles将查找每个已安装应用程序的static/目录中的文件,以及staticfiles\u DIRS中定义的目录中的文件。(此行为取决于STATICFILES\u FINDERS中列出的后端)。
在您的情况下,您可能希望在STATICFILES\u DIRS中指定目录:静态文件\u DIRS=( “C:/Users/Dan/seminarWebsite/static/”, ) -
通过将以下内容添加到
url.py的末尾,使视图可访问:来自django.contrib.staticfiles.url的
导入静态文件\u urlpatterns urlpatterns+=静态文件\u urlpatterns() -
确保在
settings.py中有DEBUG=True
就这样
如果您运行dev服务器(/manage.py runserver),您应该能够通过http://localhost:8000/static/images/vision.jpeg(服务于C:/Users/Dan/seminarWebsite/static/images/vision/jpeg)
链接到模板中的静态文件
有两种方法可以为静态文件获取正确的链接—使用staticfiles模板标记,以及使模板可以访问static\u URL。既然你尝试了后者,我们就坚持下去
-
确保您在
TEMPLATE\u context\u processors中有'django.core.context\u processors.static'。如果您没有重新定义模板\u上下文\u处理器,那么没有什么可做的,因为默认情况下它应该在那里 -
确保在呈现模板时使用RequestContext。例如:
django.template导入请求上下文中的
# ... 定义某些视图(请求): # ... 返回render_to_response('my_template.html'{ “foo”:“bar”,#其他上下文 },context_instance=RequestContext(请求))
您现在应该能够在my_template.html中使用以下内容:
<;a href=”https://stackoverflow.com/questions/9181047/{{STATIC_URL}}images/vision.jpeg/>;
在生产服务器上托管静态文件
如果您需要提供的所有静态文件都存储在该目录中(C:/Users/Dan/seminarWebsite/static),那么您就快到了。只需简单地将您的Web服务器配置为在/static/上托管该目录(或设置static\u URL的任何内容),就可以了
如果文件分散在不同的目录和/或特定于应用程序的静态文件中,则需要对它们进行整理
-
将
STATIC\u ROOT设置为要存储整理文件的目录 -
运行
/manage.py collectstatic进行排序 -
将您的Web服务器配置为在
/STATIC/上承载该目录(STATIC\u ROOT)(或设置为STATIC\u URL的任何内容)