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文件问题的主要内容,如果未能解决你的问题,请参考以下文章

Django模板引擎和外部js文件

如何将Django模板变量传递给外部JS?

外部文件使用django的models

外部文件使用django的models

无论 Django 中的模板更改(或发生其他外部问题)如何,在后台提取大型 zip 文件的最佳方法是啥?

如何动态加载外部 CSS 文件?