加载django中其他静态文件引用的静态文件

时间:2018-06-19 07:22:53

标签: python django

在我的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

1 个答案:

答案 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'),
)