将 CSS 添加到 Django 1.4 模板的新手指南

Posted

技术标签:

【中文标题】将 CSS 添加到 Django 1.4 模板的新手指南【英文标题】:Newbie Guide For Adding CSS To Django 1.4 Templates 【发布时间】:2012-06-29 09:45:37 【问题描述】:

我真的很困惑。我正在使用 Django 1.4,我整天都在寻找这个,似乎最新版本的 Django 中的一切都发生了变化,并且文档根本​​没有帮助(至少对我来说)。请帮我将 CSS 文件附加到我的模板。

所以,这是我的 settings.py 文件

STATIC_ROOT = 'F:/Django/mysite/mysite/static/'

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    "F:/Django/mysite/mysite/static/",
)

这是我的网址

from django.conf.urls.defaults import *
from myste.views import hello, home
from django.views.static import *
from django.conf import settings

urlpatterns = patterns('',
    ('^home/$', home)
)

这是观点

def home(request):
    return render_to_response('home.html', locals(),context_instance=RequestContext(request))

最后是模板(home.html)

url:  STATIC_URL 

哦,我不确定应该在我的 TEMPLATE_CONTEXT_PROCESSORS 中放什么,但到目前为止就是这样。

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
)

这是我运行服务器时得到的输出

url:

我知道这些代码中可能存在一些巨大的错误,但那是因为我一直在阅读不同 django 版本的不同来源。是的,我已经阅读了文档,但正如我所说,它对我没有太大帮助。

【问题讨论】:

【参考方案1】:

您似乎根本没有阅读说明。需要做的两件重要的事情是 1) 确保 static 处理器位于 TEMPLATE_CONTEXT_PROCESSORS 中,以及 2) 定义一些 URL 以实际为开发中的静态文件提供服务。

这些都没有“在最新版本中改变”。之前的1.3版本有一些改进,但基本原理是一样的。

【讨论】:

【参考方案2】:

'django.core.context_processors.media', 'django.core.context_processors.static',

根据this,它们都应该在您的 TEMPLATE_CONTEXT_PROCESSORS 中。这使得 STATIC_URL 在所有使用请求上下文的上下文中都可用。如果您真的阅读了文档,并确保将它们设置为 1.4,您将避免很多此类问题,并为您省去很多麻烦。

您可能想使用render 来省去一些麻烦和打字。我通常只是用render(request, context, template) 将它换成render_to_request(blah),在这种情况下是render(request, locals(), 'home.html')

【讨论】:

【参考方案3】:

STATIC_URL 不在您的本地范围内,因此通过 locals() 作为您的字典将无济于事。

def home(request):
return render_to_response('home.html', 'STATIC_URL': settings.STATIC_URL,context_instance=RequestContext(request))

或者您可以使用 1.4 中可用的新 static 标记并避免模板中出现这个特殊问题:

% load static from staticfiles %
url: % static "/" %

【讨论】:

以上是关于将 CSS 添加到 Django 1.4 模板的新手指南的主要内容,如果未能解决你的问题,请参考以下文章

如何将样式添加到 base.html:Django 框架?

我在将 Css 文件链接到 Django 模板时遇到问题

Django:在模板中呈现表单字段时添加 CSS 类

django 将一个模板包含到另一个模板中

将 VueJs 组件添加到 Django 模板中

在 django 中将 css 类添加到验证错误的字段