我有一个数据库和相应的models.py文件中的现有Django应用程序。
我有一个新的旋风式的应用程序,提供Web服务向其他应用程序。 它需要读取/从同一个数据库写,有代码的模型文件,我想用。
我怎样才能最好地使用我的龙卷风请求处理Django的数据库和模型? 它是那样简单做一个符号链接到models.py Django项目文件夹,导入Django的模块,并使用它吗? 我想我必须做settings.configure(),对不对?
谢谢!
我有一个数据库和相应的models.py文件中的现有Django应用程序。
我有一个新的旋风式的应用程序,提供Web服务向其他应用程序。 它需要读取/从同一个数据库写,有代码的模型文件,我想用。
我怎样才能最好地使用我的龙卷风请求处理Django的数据库和模型? 它是那样简单做一个符号链接到models.py Django项目文件夹,导入Django的模块,并使用它吗? 我想我必须做settings.configure(),对不对?
谢谢!
该路径添加到Django项目的龙卷风应用程序的PYTHONPATH ENV-VAR并相应地设置DJANGO_SETTINGS_MODULE。 然后,您应该能够导入模型,然后使用正常Django的照顾初始设置的第一进口。
你不应该要求任何符号链接。
有一个例子在这里了解如何使用Django ORM和Django的内部龙卷风形式。 你可以阅读使用Django龙卷风的Web服务器内部的一些信息。 下面的代码已采取从这里:
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()
这是另外一个演示使用Django和龙卷风...
我不能让它与@aragon在Django 1.8提供的信息工作。 由于这个问题是在谷歌上搜索的结果为Django的+旋风整合时的一个,这里是我得到了它在Django 1.8的工作:
from django import forms
from django.db import models
from models import Operation #Own model
import django
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'database.db',
}
}
settings.configure(DATABASES=DATABASES)
if django.VERSION[:2] > (1,5):
django.setup()