3

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

4

3 回答 3

3

通过查看您的原始帖子,在我看来,您正在从两个不同的角度呈现您的页面。

首先,您{% load staticfiles %}将加载与 staticfiles 模块关联的模板标签。其次,在您引用的链接元素内部,{{ STATIC_URL }}该元素通过上下文进行扩展。

因此,我会推荐以下两种行动方案之一。

1 - 利用你在模板中加载的静态文件模块和模板标签。

为此,您应该将链接元素修改为如下所示:

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

请注意,在这种情况下,我已将 替换{{ STATIC_URL }}{% static %}模板标签。模板标签接受一个参数,该{% static %}参数是您希望以静态 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))

正如我上面所说,通过使用 a 渲染模板,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

于 2012-10-09T08:20:30.357 回答
1

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

于 2012-10-02T13:20:54.073 回答
0

如果您在开发服务器上工作,您将希望让 Django 提供静态内容。当您投入生产时,您将让您的 Web 服务器处理提供静态内容的服务。

您将需要STATIC_URL指向静态内容的路径(在这种情况下,它看起来像/Template/Database/. 。听起来您可以正常工作。现在您只需要告诉 Django 在 DEBUG 模式下提供静态内容即可。请参阅这篇文章:Django MEDIA_URL 和 MEDIA_ROOT

于 2012-10-02T14:58:48.893 回答