在非根文件夹下使用Twisted和Django提供静态文件

时间:2009-09-10 13:17:57

标签: python django twisted

我正在将应用程序(Sage)从Twisted迁移到Django。

静态文档目前在/doc/static下提供,而实时(即时构建)文档在/doc/live下提供。

是否可以使用Twisted仅提供/doc/static,让Django为其余/doc/*提供服务?

3 个答案:

答案 0 :(得分:3)

查看this link如何在Twisted上运行Django :(从博客中复制的说明)

  1. easy_install Twisted
  2. easy_install Django
  3. 利润!
  4. django-admin.py startproject foo
  5. 使用以下代码创建myapp.py:

    来自django.core.handlers.wsgi导入WSGIHandler

    application = WSGIHandler()

  6. 导出DJANGO_SETTINGS_MODULE = foo.settings

  7. twistd -no web --wsgi = myapp.application
  8. 在评论中还有一个例子,说明如何在请求传递给Django之前直接使用Twisted提供媒体:

      

    要处理媒体文件,请使用   “static.File”来自“twisted.web”之类的   so:staticrsrc =   static.File(os.path.join(os.path.abspath则( “”),   “mydjangosite / media”))然后添加   该资源到您的根资源   像这样:root.putChild(“media”,   staticrsrc)

    免责声明:我自己没试过,但博客文章似乎很新,作者愿意回答问题。

    编辑:还有另一篇关于这个主题的文章,附有关于如何使其工作的说明here,其中似乎包括直接使用Twisted服务静态文件。

答案 1 :(得分:2)

可以做到,优雅的程度只是变化......我明白这是为了过渡,所以它可能不一定非常漂亮。

如果你必须让Twisted服务于静态文件,那么你要么必须在django中一起攻击那些文件的代理通过,要么在整个事情面前抛出一些东西。与VPATH的Perlbal也可以做到这一点,它将采用正则表达式的网址,并让他们找到合适的服务。

如果您不必使用Twisted,则有很多不同的方法可以使用它。您仍然可以使用Perlbal或类似的东西来提供静态文件,从长远来看,无论如何都应该有。

答案 2 :(得分:-1)

除非我误解了这个问题,为什么不简单地将/ doc / static url重写为Twisted,直到它到达Django(即在Apache /代理级别)?

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html