在我的Python Django项目中,我有一个静态html文件(map.html)。在这个html文件中引用了其他静态文件。像这样:
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script>L_PREFER_CANVAS = false; L_NO_TOUCH = false; L_DISABLE_3D = false;</script>
<script src="mfiles/leaflet_002.js"></script>
<script src="mfiles/jquery.js"></script>
<script src="mfiles/bootstrap.js"></script>
<script src="mfiles/leaflet.js"></script>
<link rel="stylesheet" href="mfiles/leaflet.css">
<link rel="stylesheet" href="mfiles/bootstrap.css">
...
使用django模板语言从模板文件(index.html)引用静态html文件,如下所示:
{% load static %}
<iframe src="{% static "map.html" %}" id="iframemap" style="top:0;left: 0;width:100%;height: 100%; position: absolute; border: none;">
问题是django无法找到静态html文件(map.html)中引用的静态文件(mfiles / leaflet_002.js等),因为在这个html文件(map.html)中,django模板语言不能使用所以django找不到这些文件的路径。
为了使我的架构清洁,我提出了这个简单的图表:
django_template_file ----引用----&gt; map.html(静态,加载正常) ----引用----&gt; mfiles /*.js等(问题django没有看到那些文件)
如何告诉django还要查看m_app / static / mfiles / *而不仅仅是m_app / static /?
即使m_app / static / mfiles /中的静态文件仅从位于m_app / static /中的其他静态文件引用(并且正确加载)?
文件结构的相关部分:
m_project
|______> m_app
|______> __pychache__
|______> migrations
|______> static
|______> m_files ("this folder is referenced in map.html and django doens't see it")
|______> leaflet_002.js
|______> ...
|______> map.html ("this is the static html file referenced from template index.html")
|______> templates
|______> m_app
|______> index.html ("this is the template file I am talking about above")
|______> __init__.py
|______> admin.py
|______> apps.py
|______> models.py
|______> tests.py
|______> urls.py
|______> views.py
|______> m_project
|______> __pychache__
|______> __init__.py
|______> settings.py
|______> urls.py
|______> wsgi.py
|______> db.sqlite3
|______> manage.py
答案 0 :(得分:0)
为什么{% load staticfiles %}
中没有index.html
?
# index.html
{% load staticfiles %}
<!DOCTYPE html>
<html><head>
<script src='{% static "mfiles/leaflet_002.js" %} '></script>
...
# django settings
STATICFILES_DIRS = (
os.path.join(SITE_ROOT, 'static'),
os.path.join(SITE_ROOT, 'm_app', 'static'),
)