在 CSS 文件中正确使用模板语言

Posted

技术标签:

【中文标题】在 CSS 文件中正确使用模板语言【英文标题】:Using template language in CSS files correctly 【发布时间】:2012-03-06 07:46:29 【问题描述】:

我正在尝试通过我的 url.py 文件提供 CSS 文件,以便我可以在我的 CSS 中使用模板标签。

这是我的代码。

Base.html

<head>
...
<link rel="stylesheet" type="text/css" href="/site_media/css/wideTitle.css" />

urls.py:

(r'^site_media/css/wideTitle.css','lightbearers.views.viewWideTitle'),

views.py:

def viewWideTitle(request):
    contentListAbout = About.objects.filter(Q(startDate__lte=datetime.now())).order_by('-startDate')
    if len(contentListAbout) > 0:
        contentAbout = contentListAbout[0]
    else:
        contentAbout = None
    ...
    return render_to_response('wideTitle.css', 'contentAbout':contentAbout, ...,
                              context_instance=RequestContext(request))

settings.py:

TEMPLATE_DIRS = (
    os.path.join(PROJECT_PARENT, "templates"),
    os.path.join(PROJECT_PARENT, "media/css"),
)

wideTitle.css(在 /media/css 中):

#wideTitle
    clear:both;
    height:180px;
    padding-left:0px;
    background: url( contentAbout.headerImage.url ) no-repeat top left;

我可以通过在浏览器中输入其 URL 来访问 CSS 文件,但 Base.html 根本不读取它。我想我已经得到了一切体面的东西;我查看了here 和here 的提示。有人有想法吗?

【问题讨论】:

您使用的是哪个版本的 django?您不需要将所有静态文件收集在单独的文件夹中以便在 django 中访问吗?您是否尝试过在模板中包含 css 样式而不是通过链接标签调用它? 写得很好的问题,欢迎来到 Stack Overflow。 @Priyeshj:这里的 CSS 文件不是静态文件,而是 Django 模板。 通过 Django 提供静态媒体不是一个好主意——你应该把它留给你的网络服务器。相反,为什么不在你的基础模板中有一个模板块,它允许你在模板中插入自定义 CSS,可以在顶层进行压缩 好吧,内联 css 是一件坏事,但这看起来更糟!请使用 img 标签(不知何故)或在模板文件中设置 style="background:url()" :) 【参考方案1】:

生成的样式表是否使用正确的 mime 类型?如果不是,浏览器可能不会将其解释为 CSS。

我不记得 render_to_response 是否接受 content_type='text/css 作为参数,但如果 Django 尚未使用正确的 mime 类型,有一种方法可以设置它。

编辑:作为@TommasoBarbugli pointed out,您需要mimetype 参数为render_to_response

(Firefox 的 Firebug 插件或 Chrome/Safari 中的 Web Inspector 应该能够向您显示样式表的 mime 类型。)

【讨论】:

啊,mimetype 而不是 content_type — 这确实更有意义。 做到了!谢谢@PaulD.Waite。我仍然不确定这是否是完成这一切的最佳方式,但至少它有效...... @reK1NDLE:太好了,很高兴我们知道它为什么不起作用。我不确定这是否是实现所需功能的最佳方式——这可能值得自己提出一个问题。 @TommasoBarbugli 我最终使用background:url()从模板中的模型中提取数据。 Kinda 违反了 DRY,因为我不得不将它添加到这么多模板中,但我认为从长远来看,它比通过 Django 提供 CSS 更好。谢谢!

以上是关于在 CSS 文件中正确使用模板语言的主要内容,如果未能解决你的问题,请参考以下文章

9模板语言继承使用

Django-模板语言和过滤器

Velocity 模板语言中词法正确的语句是啥

08-Django 模板

在 Apache Velocity 模板语言中获取文件目录

Templates