我正在将应用程序 ( Sage ) 从 Twisted 迁移到 Django。
静态文档当前在 .下提供/doc/static
,而实时(即时构建)文档在/doc/live
.
是否可以只使用 Twisted 服务/doc/static
,让 Django 服务其余部分/doc/*
?
查看有关如何在 Twisted 之上运行 Django 的链接:(从博客复制的说明)
使用以下代码创建一个 myapp.py:
从 django.core.handlers.wsgi 导入 WSGIHandler
应用程序 = WSGIHandler()
导出 DJANGO_SETTINGS_MODULE=foo.settings
在评论的下方还有一个示例,说明如何在将请求传递给 Django 之前直接使用 Twisted 提供媒体:
要处理媒体文件,只需使用“twisted.web”中的“static.File”,如下所示: staticrsrc = static.File(os.path.join(os.path.abspath("."), "mydjangosite/media"))然后将该资源添加到您的根资源中,如下所示: root.putChild("media", staticrsrc)
免责声明:我自己没有尝试过,但博客文章似乎很新,作者愿意回答问题。
编辑:还有另一篇关于该主题的文章,其中包含有关如何使其在此处工作的说明,其中似乎包括直接使用 Twisted 服务静态文件。
可以,优雅的程度不一样……我知道这是为了过渡,所以不一定要很漂亮。
如果你必须让 Twisted 为静态文件提供服务,那么你要么必须在 django 中为这些文件创建一个代理,要么在整个事情前面扔一些东西。带有 VPATH 的 Perlbal 也可以做到这一点,它会采用正则表达式的 url 并使它们命中正确的服务。
如果您不必使用 Twisted,有很多不同的方法可以做到这一点。你仍然可以使用 Perlbal 或类似的东西来提供静态文件,从长远来看你应该拥有的东西。
除非我误解了这个问题,否则为什么不简单地将 /doc/static url 重写为 Twisted 甚至在它到达 Django 之前(即在 Apache / 代理级别)?