正在加载...

tornado-8 tornado 和 django 合体(中)

对于tornado的合体,要注意下面几个方面。

在启动的时候,需要载入django的配置

其实,django在这方面还是做得很优秀的,因为,只需要有一个settings.py就把django需要的环境都包含了。

所以,在application.py的上面要写上:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

要通过wsgi来启动django服务

django是http基于wsgi的,所以如果你要用django的admin,就必须启动wsgi。

所以,在application.py里面有这样的代码:

def admin_listen():
    wsgi_app = wsgi.WSGIContainer(WSGIHandler())
    tornado_app = tornado.web.Application([
        ('/admin/(.*)', tornado.web.FallbackHandler, dict(fallback=wsgi_app)),
    ])
    tornado.httpserver.HTTPServer(tornado_app).listen(admin_port)
    print 'run admin platform on (%s:%s)' % (address, admin_port)

要修改工程的urls.py

对于纯粹的django环境,django的admin对应的url可以自动的找到。

但是由于我们是通过tornado的IOLoop代理过去的,就需要自己手动配置。

所以,在urls.py里面有这样的代码:

admin.autodiscover()

MEDIA_ROOT = os.path.join(os.path.dirname(django.__file__), 'contrib', 'admin', 'media')

urlpatterns = patterns('',
    (r'^admin/media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': MEDIA_ROOT, 'show_indexes': False}),
    (r'^admin/', include(admin.site.urls)),
)

要修改settings.py里面的ADMINMEDIAPREFIX

ADMINMEDIAPREFIX 需要配置成为urls.py里面的urlpatterns对应的地址,否则会找不到静态资源

合体后使用Django的orm 看下篇吧