Django css文件无法正常工作

时间:2012-10-02 13:17:58

标签: html css django django-staticfiles

我一直在四处寻找并尝试一切,但我似乎无法让我的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

3 个答案:

答案 0 :(得分:3)

通过查看您的原始帖子,我觉得您的工作是从两个不同的角度渲染您的页面。

首先,您有{% load staticfiles %},它将加载与staticfiles模块关联的模板标记。其次,在你的链接元素中引用{{ STATIC_URL }},它通过上下文扩展。

由此我建议采取以下两种行动之一。

1 - 使用staticfiles模块和模板中加载的模板标签。

为此,您应该修改link元素,如下所示:

<link rel="stylesheet" href="{% static "style.css" %}" type="text/css" media="screen" />

请注意,在这个例子中,我已将{{ STATIC_URL }}替换为{% static %} templatetag。 {% static %} templatetag接受一个参数,该参数是您希望用静态URL作为前缀的文件,并扩展为完整的字符串。

2 - 通过修改视图以使用上下文进行渲染来利用上下文。

{{ STATIC_URL }}变量通过请求上下文可用。有许多有用的变量,如果你想利用它们,你可以依赖这些变量来扩展。问题是您必须确保使用上下文呈现模板,这意味着您可能需要更改一个或多个视图。

作为一个例子,在没有上下文的情况下呈现的过于简单的视图将如下所示:

from django.shortcuts import render_to_response

def index_without_context(request):
    return render_to_response("index.html")

虽然使用上下文呈现的相同过于简单的视图看起来像这样:

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 }}变量以及其他可能有用的变量,那么我建议修改您的视图以使用RequestContext进行渲染。

您可以在Django文档部分中详细了解使用上下文处理器或模板标记之间关于此主题的区别:

https://docs.djangoproject.com/en/1.4/howto/static-files/#referring-to-static-files-in-templates

答案 1 :(得分:1)

"home/henk-jan/website/Template/Database"是有效的位置吗?也许"/home/henk-jan/website/Template/Database"代替?现在缺少前面的正斜杠。

答案 2 :(得分:0)

如果您正在使用开发服务器,则需要让Django提供静态内容。当您进入制作阶段时,您将使用Web服务器句柄来代替静态内容。

你会希望STATIC_URL指向静态内容的路径(在这种情况下,它看起来像是/Template/Database/。听起来你有这个工作。现在你只需要告诉Django在DEBUG模式下提供静态内容。请参阅此帖子:Django MEDIA_URL and MEDIA_ROOT