2012-05-02 11 views
18

मेरे पास एक डेटाबेस के साथ एक मौजूदा Django अनुप्रयोग है और संबंधित models.py फ़ाइल है।मैं अपने टोरनाडो एप्लिकेशन में Django ORM का उपयोग कैसे कर सकता हूं?

मेरे पास एक नया टोरनाडो एप्लिकेशन है जो अन्य अनुप्रयोगों के लिए एक वेब सेवा प्रदान करता है। इसे उसी डेटाबेस से पढ़ने/लिखने की आवश्यकता है, और मॉडल फ़ाइल में कोड है जिसका मैं उपयोग करना चाहता हूं।

मैं अपने टोरनाडो अनुरोध हैंडलरों में Django डेटाबेस और मॉडल का सबसे अच्छा उपयोग कैसे कर सकता हूं? क्या यह मॉडल.py Django प्रोजेक्ट फ़ोल्डर, Django मॉड्यूल आयात करने और इसका उपयोग करने के लिए एक प्रतीकात्मक लिंक बनाने जैसा आसान है? मुझे लगता है मुझे सेटिंग्स.configure() करना होगा, है ना?

धन्यवाद!

+2

आप एक API के रूप में अपने Django सेटअप का उपयोग और कर सकता है: चूंकि इस सवाल गूगल में शीर्ष परिणाम जब Django + तूफान एकीकरण के लिए खोज में से एक है, यहाँ मैं कैसे Django 1.8 में काम करने के लिए मिल गया है async http अनुरोध करता है। तो आपको टर्ननाडो को कोड ट्रांसफर करने की चिंता करने की ज़रूरत नहीं होगी। – dm03514

+1

django ORM का उपयोग टर्ननाडो में अवरुद्ध नहीं होगा? मुझे यकीन नहीं है कि अगर ऐसा है, तो किसी के द्वारा अधिक अंतर्दृष्टि की सराहना की जाएगी। – tapan

+0

Django ORM निश्चित रूप से अवरुद्ध है। –

उत्तर

12

डैंजो परियोजना के लिए टोरनाडो एप्लिकेशन के पायथनपैथ एनवी-var में पथ जोड़ें और उचित रूप से DJANGO_SETTINGS_MODULE सेट करें। इसके बाद आपको अपने मॉडल आयात करने और पहले आयात पर प्रारंभिक सेटअप की देखभाल करने वाले डीजेगो के साथ सामान्य के रूप में उपयोग करने में सक्षम होना चाहिए।

आपको किसी भी सिम्लिंक की आवश्यकता नहीं होनी चाहिए।

17

टोरनाडो के अंदर django ORM और django रूप का उपयोग करने के तरीके के बारे में here उदाहरण है। और आप कुछ जानकारी के लिए Using Django Inside the Tornado Web Server पढ़ सकते हैं। निम्नलिखित कोड वहां से ले लिया है:

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 और तूफान के साथ एक और demo है ...

+0

यदि मैं एक साथ django और tornado में मॉडल वर्ग का उपयोग करना चाहता हूँ? –

3

मैं इसे Django 1.8 में @aragon द्वारा दी गई जानकारी के साथ काम करने के लिए नहीं मिल सकता है।

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() 
संबंधित मुद्दे

 संबंधित मुद्दे