Django外部css文件问题
Posted
技术标签:
【中文标题】Django外部css文件问题【英文标题】:Django external css file problem 【发布时间】:2011-07-09 02:10:41 【问题描述】:几天来,我一直在尝试设置我的 django 项目以使用外部 css 文件运行我的 html 模板。到目前为止,没有成功....
我已经安装了静态文件(我使用 django 1.2.4。)并将“静态文件”放在 settings.py 中的 INSTALLED_APPS 中,并添加了以下代码:
STATIC_ROOT=os.path.join(os.path.abspath(os.path.dirname(file)), "static")
STATIC_URL='/static/'
我的 css 文件位于 /static/css/stylesheet.css 下
我的 html 模板有链接
link rel="stylesheet" type="text/css" href=" STATIC_URL css/stylesheet"
运行服务器后,页面加载正常。但是 django 找不到我的样式表...
我在这里做错了什么?
【问题讨论】:
【参考方案1】:静态根目录和 url 实际上并不托管文件。前面提到的静态服务选项(在 urls.py 中)对于开发和学习来说是一个不错的选择,但是如果您移动到部署服务器,您应该使用您的网络服务器提供的静态托管。
静态文件夹的工作方式是将每个应用程序、项目等的路径位置添加到 settings.py 中的静态目录设置中。然后,当您运行命令“django-admin.py collectstatic”时,django 会将所有目录拉入静态根目录。第一次运行 collectstatic 后,只会再次复制已更改的文件。这将多个静态目录合并到一个公共位置。
Static files documentation
【讨论】:
【参考方案2】:您需要将RequestContext
传递给视图,因此它将通过静态文件的CONTEXT_PROCESSORS
(包括STATIC_URL
变量)运行。
from django.template.context import RequestContext
context = 'my_other_context': 1
render_to_response('your_template.html',
context_instance=RequestContext(request, context))
【讨论】:
感谢您的回复,但我不明白这一点。 CONTEXT_PROCESSORS 应该放在哪里? 'my_other_context'...这是什么意思? 在您的 settings.py 中,您应该有一个 CONTEXT_PROCESSORS 设置,其中包括静态文件上下文处理器的路径。 my_other_context 只是您可能希望传递给模板的一些附加上下文的示例。【参考方案3】:我建议你只在 url.py 文件中使用这样的 django.views.static.serve 实例:
(r'^(?P<path>.*)$', 'django.views.static.serve','document_root': '/path/to/css/'),
【讨论】:
谢谢。当我使用它时,我是否必须从我的 INSTALLED_APPS 中删除“静态文件”? 是的,您可以根据需要将其删除,因为django.views.static.serve
负责提供静态内容所需的内容以上是关于Django外部css文件问题的主要内容,如果未能解决你的问题,请参考以下文章