có một ví dụ here về cách sử dụng django ORM và dạng django bên trong Tornado. và bạn có thể đọc Using Django Inside the Tornado Web Server để biết một số thông tin. đoạn mã sau đã đưa ra từ đó:
import sys
import os
import tornado.httpserver
import tornado.ioloop
import tornado.web
# django settings must be called before importing models
from django.conf import settings
settings.configure(DATABASE_ENGINE='sqlite3', DATABASE_NAME='dev.db')
from django import forms
from django.db import models
# Define your Model
class Message(models.Model):
"""
A Django model class.
In order to use it you will need to create the database manually.
sqlite> CREATE TABLE message (id integer primary key, subject varchar(30), content varchar(250));
sqlite> insert into message values(1, 'subject', 'cool stuff');
sqlite> SELECT * from message;
"""
subject = models.CharField(max_length=30)
content = models.TextField(max_length=250)
class Meta:
app_label = 'dj'
db_table = 'message'
def __unicode__(self):
return self.subject + "--" + self.content
# Define your Form
class DjForm(forms.Form):
subject = forms.CharField(max_length=100, required=True)
content = forms.CharField()
# Define the class that will respond to the URL
class ListMessagesHandler(tornado.web.RequestHandler):
def get(self):
messages = Message.objects.all()
self.render("templates/index.html", title="My title",
messages=messages)
class FormHandler(tornado.web.RequestHandler):
def get(self):
form = DjForm()
self.render("templates/form.html", title="My title", form=form)
def post(self):
data = {
'subject':self.request.arguments['subject'][0],
'content':self.request.arguments['content'][0],
}
form = DjForm(data=data)
if form.is_valid():
message = Message(**form.cleaned_data)
message.save()
self.redirect('/')
else:
self.render("templates/form.html", title="My title", form=form)
# map the Urls to the class
application = tornado.web.Application([
(r"/", ListMessagesHandler),
(r"/form/", FormHandler),
])
# Start the server
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
và đây là một demo với django và cơn lốc xoáy ...
Bạn có thể sử dụng thiết lập django bạn như là một api và làm yêu cầu http không đồng bộ với nó. Sau đó bạn sẽ không phải lo lắng về việc chuyển mã sang lốc xoáy. – dm03514
Không sử dụng django ORM bị chặn trong cơn lốc xoáy? Tôi không chắc chắn nếu đó là trường hợp, cái nhìn sâu sắc hơn bởi một người nào đó sẽ được đánh giá cao. – tapan
Django ORM chắc chắn đang chặn. –