我一直在四处寻找并尝试一切,但我似乎无法让我的 css 文件在 Django 模板中工作。 我的 css 我叫 style.css 模板中的代码现在如下所示:
{% load staticfiles %}
<link rel="stylesheet" href="{{ STATIC_URL }}style.css" type="text/css" media="screen" />
我仍在开发服务器上工作。
在设置 py 中,我添加了:
STATICFILES_DIRS = (
"home/henk-jan/website/Template/Database")
django.contrib.staticfiles 安装在 Installed_apps 中
谁能帮我解决这个问题? 干杯,亨克斯
编辑:我的模板 (index.html) 与我的 style.css 在同一个文件夹中,该文件夹是:/home/henk-jan/website/Template/Database
最佳答案
通过查看您的原始帖子,在我看来您正在从两个不同的 Angular 呈现您的页面。
首先,您有 {% load staticfiles %}
,它将加载与 staticfiles 模块关联的模板标签。其次,在您的链接元素中,您引用了 {{ STATIC_URL }}
,它通过上下文进行了扩展。
据此,我会推荐以下两种行动方案之一。
1 - 利用静态文件模块和您在模板中加载的模板标签。
为此,您应该将链接元素修改为如下所示:
<link rel="stylesheet" href="{% static "style.css" %}" type="text/css" media="screen" />
请注意,在本例中,我已将 {{ STATIC_URL }}
替换为 {% static %}
模板标签。 {% static %}
模板标签接受一个参数,该参数是您希望以静态 URL 为前缀的文件,并扩展为完整的字符串。
2 - 通过修改 View 以使用上下文呈现来利用上下文。
{{ STATIC_URL }}
变量通过请求上下文可用。有许多有用的变量,如果您想使用它们,您可以依靠它们来扩展。问题在于您必须确保呈现您的模板带有上下文,这意味着您可能不得不更改一个或多个 View 。
例如,在没有上下文的情况下呈现的过于简单的 View 如下所示:
from django.shortcuts import render_to_response
def index_without_context(request):
return render_to_response("index.html")
虽然使用 上下文渲染的同一个过于简单的 View 看起来像这样:
from django.shortcuts import render_to_response
from django.templates import RequestContext
def index_with_context(request):
return render_to_response("index.html",
context_instance=RequestContext(request))
正如我上面所说的,通过使用 RequestContext
呈现您的模板,您可以获得其他变量以及可以使用的变量,因此这是一个非常可行的选择。
最后,这实际上取决于您希望将确保静态文件正确呈现静态 URL 的逻辑保留在何处。如果您希望模板本身内部包含该逻辑,我建议您使用 {% load staticfiles %}
方法并使用 {% static %}
模板标签。如果您更喜欢使用 {{ STATIC_URL }}
变量以及其他可能有用的变量,那么我建议修改您的 View 以使用 RequestContext 呈现。
您可以在有关此主题的 Django 文档部分阅读有关使用上下文处理器或模板标记之间的区别的更多信息:
https://docs.djangoproject.com/en/1.4/howto/static-files/#referring-to-static-files-in-templates
关于html - Django css 文件不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691046/