在模板中显示另一个数据库的数据,而不是来自 django 模型
Show data of another database in templates, not from django models
我只想知道 是否可以在我的 Django 模板中显示我另外两个 MongoDB 集合中的数据?不仅仅是来自 django 数据库的那些。
这是我的应用程序的作用:
我有一个用户表单,它使用我的模型数据库。我使用另外两个 python 程序通过 Celery 中的子进程来处理它,并且每个程序都为结果生成一个 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 数据库。有人可以帮忙吗?
当然可以,您可以连接到该数据库,在 return render(request, template.html, params)
的 params/context 个变量中创建一个查询存储 {key:value}
像这样在模板中使用键:{{key}}
在任何您想使用与该键关联的值的地方。
我只想知道 是否可以在我的 Django 模板中显示我另外两个 MongoDB 集合中的数据?不仅仅是来自 django 数据库的那些。
这是我的应用程序的作用: 我有一个用户表单,它使用我的模型数据库。我使用另外两个 python 程序通过 Celery 中的子进程来处理它,并且每个程序都为结果生成一个 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 数据库。有人可以帮忙吗?
当然可以,您可以连接到该数据库,在 return render(request, template.html, params)
像这样在模板中使用键:{{key}}
在任何您想使用与该键关联的值的地方。