2017-01-06 10 views
-1

私のDjangoテンプレートで他の2つのMongoDBのコレクションからのデータを表示できるかどうかを知りたいだけですか? djangoデータベースのものだけではありません。djangoモデルからではなく、テンプレート内の別のデータベースのデータを表示

これは私のアプリが行うことです: 私はユーザーのためのフォームがあり、それは私のモデルデータベースを使用しています。私はそれを処理するために、セロリのサブプロセスを介して2つの他のPythonプログラムを使用し、それぞれが結果のためのMongoDBを生成します。

これらの結果をテンプレートに表示したいのですが、私がやっていることが正しいのか、Djangoが助けてくれているのか分かりません。ここで

は、私がこれまで何をやったかである:

views.pyの開始時に、接続を確認し、文書にアクセスするために:今のところ

#This is calling my model and form 
from .forms import SampleForm 
from .models import Sample 

....#some code here 
import logging 

# Get an instance of a logger 
logger = logging.getLogger(__name__) 

sys.path.append(settings.APP1_PATH) 
sys.path.append(settings.APP2_PATH) 

#MongoDB connection for App1 
try: 
    app1_db = pymongo.MongoClient(settings.MONGO_HOST, settings.MONGO_PORT)[settings.app1_MONGO_DB] 
except pymongo.errors.ConnectionFailure, e: 
    logger.error("Could not connect to App1 MongoDB: %s" % e) 

#For the GridFS connection 
try: 
    conn=pymongo.MongoClient(settings.MONGO_HOST, settings.MONGO_PORT) 
    db = conn.app1fs 
    app1fs_db = GridFS(db) 
except pymongo.errors.ConnectionFailure, e: 
    logger.error("Could not connect to App1FS MongoDB: %s" % e) 


#MongoDB connection for App2 
try: 
    app2_db = pymongo.MongoClient(settings.MONGO_HOST, settings.MONGO_PORT)[settings.App2_MONGO_DB] 
except pymongo.errors.ConnectionFailure, e: 
    logger.error("Could not connect to App2 MongoDB: %s" % e) 

def results_detail(request, id): 
    sample_instance = get_object_or_404(Sample, id=id)  
    context = { 
     "name": sample_instance.get_sample_name, 
     "sample": sample_instance 
    } 
    return render(request, "analysis/results_detail_base.html", context) 

def app1_results_detail(request): 
    #call MongoDB document's collections then pass to template 
    #App1's 
    #insert here.. 
    context = { 
    } 
    return render(request, "analysis/app1_results_detail.html", context) 

、APP1のための私のテンプレートビューでアクセスする方法がわからないため、app2の結果は空白です。私はすでにレガシーデータベースの使用についてinspectdbを読みましたが、Mongoデータベースには適用されません。誰でも助けてくれますか?

+0

あなたが何を求めているのか分かりません。接続を設定し、おそらくセロリのタスクを読み書きするので、MongoDBへのアクセス方法ははっきり分かります。それでは、あなたもビューでそれをやっているのを止めているのですか?もちろん、テンプレートはどこから来ても、渡すデータはすべてレンダリングされます。 –

+0

おかげさまで、私のコードのロジックについてはかなり躊躇しました。私はそれが実行されたらそれを試してみましょう。 – sparklights

答えて

0

もちろんはい、あなたは、そのDBに接続することをクエリストアすることができます:return render(request, template.html, params)

ののparams /文脈で{キー値}の変数は、このようなテンプレートでキーを使用する:あなたがしたいこれまで{{key}}このキーに関連付けられた値を使用します。

+0

アイデアありがとう。私は何が起こるかについてあなたにお返しします。 2つのアプリは実際に私のdjangoアプリの外にある2つのpythonプログラムです。 – sparklights

+0

他の2つのアプリは、もしそれらがdjangoアプリなら、あなたはこのdjangoプロジェクトに追加することができます。それ以外の場合は、それらが単なるメソッドであれば、それらを関数としてインポートし、メソッドによって返された出力を使用することができます。 –

関連する問題