【问题标题】:Django external css file problemDjango外部css文件问题
【发布时间】: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 找不到我的样式表...

我在这里做错了什么?

【问题讨论】:

    标签: css django static


    【解决方案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 负责提供静态内容所需的内容
      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2022-12-12
      • 2013-02-13
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多