Получение и отображение коллекции mongodb на html с использованием flask и pymon go (python код) - PullRequest
0 голосов
/ 19 июня 2020

Я работаю над веб-приложением Python (я новичок в Python), которое изначально подключено к Firebase, и я пытаюсь перейти на MongoDB. Проблема здесь в том, что я получаю коллекцию MongoDB, и мне не удается вставить документы в массив объектов, чтобы я мог отобразить их на веб-странице, было бы интереснее преобразовать коллекцию в список или массив значений ключей ?

Я пробовал кучу разных вещей, но в основном получаю ошибки типа

Мой код db_manager.py:

#pymongo connecting and  retreiving collection (Devices)
client =  MongoClient('localhost',27017)
db = client['db']
Devices =db.Devices

def select_devices():
    #global firebase, database
    # all_devices = list(Devices.find({}))
    return all_devices

и это мой менеджер IHM в для l oop Я хочу добавить документы в Data, чтобы я мог отображать их на своей веб-странице

@app.route('/door_status', methods=['GET', 'POST'])
def door_status():
    global identify


    # Authentification check
    if not identify:
        return redirect(url_for('auth'))

    data = []
    error = None


    for document in db.select_devices():

        data.append((document.next()))

    if request.method == 'POST':

        # for device in elements :
        env = bridge.KeyCoreEnvironment()
        embedded = env.request_embedded(request.form['serial'], randrange(100000))
        if request.form['type'] == "Car":
            data = {"Name": request.form['name'], "Uuid": request.form['uuid'], "Type": request.form['type'],
                    "IsLock": True, "KC_Embedded_Id": embedded, "KC_Device_Id": "", "KC_Module_Id": ""}
            db.insert_device(data)
            return redirect(url_for('door_status'))

        elif request.form['type'] == "Door":
            data = {"Name": request.form['name'], "Uuid": request.form['uuid'], "Type": request.form['type'],
                    "IsLock": True, "IsOpen": False, "Battery": 100, "KC_Embedded_Id": embedded, "KC_Device_Id": "",
                    "KC_Module_Id": ""}
            db.insert_device(data)
            return redirect(url_for('door_status'))

        else:
            error = 'Invalid Type device. Please try again.'

    return render_template('door_status.html', data=data, error=error)

Я пробовал это безуспешно, что я делаю не так? Как преобразовать коллекцию в словарь или массив и как добавить свои устройства в «Данные»?

Я использую pymongo==3.10.1, Python 3.8.2, flask-mongoengine==0.9.5

...