11

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

我已经设置了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"/>

任何有关如何引用文件以便引导样式返回模板的帮助将不胜感激!

4

3 回答 3

18

它应该是

{% load static %}

然后像

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

更新完整性

文件夹结构

  • 项目
  • 应用程序1
  • 应用程序2
  • myproj_public
  • 静止的
    • css
      • 引导程序.css
    • js
      • xyz.js

设置文件

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

STATIC_URL = '/static/'
于 2012-12-24T04:33:48.273 回答
5

您是否在视图中设置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))
于 2012-12-23T20:16:48.087 回答
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 文件。

于 2017-12-04T11:02:18.043 回答