繁体   English   中英

从 Mongodb 检索数据并使用 django 在前端显示

[英]Retrieving data from Mongodb and show it on front-end using django

我有一个名为world的 mongodb 数据库,它有两个来自之前city的集合, languages 我想在网上展示我收藏的数据,我该怎么做。

目前我知道在models.py中创建collection并迁移它。 喜欢; 首先我们必须在setting.py中编辑数据库[]

DATABASES = {
       'default': {
           'ENGINE': 'djongo',
           'NAME': 'world',
       }
   }

models.py我创建了一个类并使用python manage.py migrate迁移它

class Destination(models.Model):
    name= models.CharField(max_length=100)
    img=models.ImageField(upload_to='pics')
    desc=models.TextField()

我可以使用views.py中的以下代码从Destination中检索数据

from django.shortcuts import render
from .models import Destination
def index(request):
    dests=Destination.objects.all()
    return render(request,'index.html',{'dests':dests})

我的问题是我的收藏/班级已经在数据库( citylanguage )中可用,我没有创建它与我定义的Destination相反。 那么如何在前端展示world数据库的city集合数据。 请寻求帮助。

如果我正确地理解了你,那么你就有了一个名为world的 MongoDB 数据库。 在开始设置 Django 之前,您存储了citylanguages 然后您添加了一个Destination模型,从而创建了一个新集合。 目前,您正在寻找一种获取citylanguages集合数据的方法,就像使用Destination一样。

所以有多种方法可以处理它:

  1. citylanguages集合创建 Django 模型(定义现有集合中的字段):
class City(models.Model):
    field1 = ...
    field2 = ...

    class Meta:
        db_table = 'city'  # important, should be your existing collection name

class Language(models.Model):
    field3 = ...
    field4 = ...

    class Meta:
        db_table = 'languages'  # important, should be your existing collection name

现在您可以像使用Destination模型一样使用CityLanguage

  1. 使用PyMongo (在您使用Djongo已经安装)。 所以你的剪断看起来像:
from django.shortcuts import render
from .models import Destination
import pymongo

# default localhost connection URL
MONGO_URL = 'mongodb://localhost:27017'
connection = pymongo.MongoClient(MONGO_URL)
mongo_db = connection.world


def index(request):
    collection_city = db['city']
    collection_languages = db['languages']

    cities = list(collection_city.find())
    languages = list(collection_languages.find())
    dests=Destination.objects.all()
    return render(
        request,
        'index.html', 
        {
            'dests': dests, 
            'cities': cities,
            'languages': languages
        }
    )

我会使用选项 1 ,因为它可以让您保持项目的连贯性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM