【问题标题】:How can I serve a static page from urls.py?如何从 urls.py 提供静态页面?
【发布时间】:2014-11-12 15:43:34
【问题描述】:

我有一个 Django 站点,我需要在其中提供 favicon.ico - 作为静态文件,它位于 STATIC_URL/path/to/favicon.ico。是否可以直接从urls.py 这样做? (即不为此创建特定的视图

我发现this question 显示了如何从一个模式映射到另一个[命名] 模式,但这不是我需要的:我想从一个模式映射到一个静态 URL。比如:

url(r'^favicon.ico$', view_that_serves_from_STATIC_ROOT_or_redirects_to_STATIC_URL),

有可能吗?如果没有,最省力的方法是什么?

附:我将 Django 1.4.14 与 Python 2.6.0 一起使用(不,由于我的环境中的限制,我无法升级到更新的版本......)

【问题讨论】:

  • 您使用的是 Apache、nginx 还是其他?您应该尝试在其中而不是 Django 中处理这个问题。
  • @schillingt 是的,我能做到!谢谢你的建议。现在我只是使用runserver 向我的客户展示原型,但如果必须,我可以将其推迟到生产阶段。

标签: django django-urls django-staticfiles


【解决方案1】:

你想要做的事情应该在 django 之外完成。 CSS、JS、图像等所有资产都可以通过 nginx 之类的东西可靠地提供。我还建议您查看可以帮助解决此问题的 django-storage。您可以在documentation中阅读更多关于如何处理静态文件的信息

也就是说,您可以使用 django 的 TemplateView 通过 urls.py 提供纯模板。如果您不需要在模板本身内进行任何更改,这将很有用。 (在 django 1.4 中工作)

【讨论】:

  • 我认为你是对的!我一直使用简单的/static/... 来保持简单,但我知道这不是正确的做法。但是,在这种情况下,我没有链接到模板中的静态文件,而是提供具有预定义名称的文件(favicon.ico;我猜robots.txt 也属于该类别)。我会尽快检查您的其他建议(即使在生产中,我将其留给 Apache)。
  • 使用TemplateView 不起作用-因为我的文件是二进制文件,而不是模板-但是在浏览您提供的链接时,我发现RedirectView,这解决了我的问题。谢谢!
猜你喜欢
  • 2014-08-22
  • 1970-01-01
  • 2023-03-13
  • 2019-11-14
  • 2012-09-06
  • 1970-01-01
  • 2013-02-20
  • 2018-02-05
  • 2016-08-06
相关资源
最近更新 更多