Django - 引用模板中的静态文件

时间:2012-12-23 18:17:22

标签: python django templates twitter-bootstrap static

我在模板中引用静态文件时遇到了困难。我正在使用Twitter Bootstrap并将引导程序文件(css,img,js)放在mysite / static中。

我根据this tutorial设置了STATIC_URLSTATIC_ROOTTEMPLATE_CONTEXT_PROCESSORS。我已经运行./manage.py collectstatic复制了72个文件。我还将以下模板标记添加到我的模板(index.html)文件中,但这没有用。

{% load staticfiles %}
<link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen"/>

有关如何引用文件以便引导程序样式返回模板的任何帮助都将非常感激!

3 个答案:

答案 0 :(得分:16)

应该是

{% load static from staticfiles %}

然后像

<!-- path -->
<link href="{% static 'bootstrap/css/bootstrap.css' %}" rel="stylesheet" type="text/css">
<!--->

完整性更新

文件夹结构

  • PROJ
    • APP1
    • APP2
    • myproj_public
    • 静态
      • CSS
        • bootstrap.css
      • JS
        • xyz.js

设置文件

STATIC_ROOT = os.path.join(os.path.abspath(
    os.path.join(PROJECT_ROOT, 'myproj_public', 'static')), '')

STATIC_URL = '/static/'

答案 1 :(得分:4)

您是否在视图中设置了user_stylesheet上下文变量?您需要先设置它,然后才能将其传递给模板。

我通常只使用{{ static_url }}标签来执行此操作,因此包含引导程序组件的代码就像。

<link href="{{ STATIC_URL }}bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="{{ STATIC_URL }}bootstrap/js/jquery.js"></script>

假设bootstrap文件夹存在于static。

修改

对于您的情况,要设置user_stylesheet上下文变量,您需要执行类似

的操作
dict["user_stylesheet"]= <path to your file>
#add other context variables you might have to
render_to_response(<your template name>, dict, context_instance=RequestContext(request))

答案 2 :(得分:0)

设置static_root时,例如:

STATIC_ROOT = os.path.join(BASE_DIR, "static_root/")

,所有文件都复制到那里,而不是project_root/static。它是Django 1.3中引入的一种新机制,可以简化静态文件处理:它将收集每个已安装应用程序下每个STATICFILES_DIR 和所有static目录中的所有文件,因此你一次复制它们。

请使用static_root路径引用css / js文件。