在 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 文件中正确使用模板语言的主要内容,如果未能解决你的问题,请参考以下文章