私の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データベースには適用されません。誰でも助けてくれますか?
あなたが何を求めているのか分かりません。接続を設定し、おそらくセロリのタスクを読み書きするので、MongoDBへのアクセス方法ははっきり分かります。それでは、あなたもビューでそれをやっているのを止めているのですか?もちろん、テンプレートはどこから来ても、渡すデータはすべてレンダリングされます。 –
おかげさまで、私のコードのロジックについてはかなり躊躇しました。私はそれが実行されたらそれを試してみましょう。 – sparklights