Есть 2 вещи, которые не очень хороши в этом подходе к проблеме. 1) Вы используете якорный тег для выбора флажка. 2) Вы используете GET-вызов для переключения на ваших маршрутах, где он должен быть PUT или POST.
Если вы не хотите использовать Javascript и хотите использовать только python и HTML, я бы рекомендовал использовать ваш HTML-форму. WTForms - инструмент хорошей формы для фляжки, который должен помочь вам в этом. Когда вы отправляете форму, ваш бэкэнд (python) должен принимать POST-вызов, который обновляет идентификатор в базе данных и может перенаправлять обратно на страницу.
Если вы не хотите кнопку отправки, и вы не Не используйте javascript. Я бы рекомендовал создать прослушиватель onClick с помощью библиотеки jQuery или реагировать и отправить запрос PUT на ваш сервер, который попадает на ваш маршрут toggle_status. Таким образом, вам даже не нужно делать перенаправление, ваш интерфейс может синхронизироваться с бэкэнд при выполнении асинхронных вызовов. Вот руководство по выполнению вызовов AJAX https://www.airpair.com/js/jquery-ajax-post-tutorial
Почему вы должны использовать POST, PUT или GET? вот хороший блог, отвечая на этот вопрос: http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post
Вы можете использовать агрегацию ниже 3,6 и выше.
db.colname.aggregate(
[{"$project":{
"loop":{
"$reduce":{
"input":"$loop",
"initialValue":{},
"in":{"$mergeObjects":["$value","$this"]
}
}
}
}}]
)
Основываясь на ответе Вирама, приведенном выше с использованием $ mergeObjects, приведем более сжатый запрос с использованием $ project.
Запрос
db.loop.aggregate(
[{
"$project": {
"loop": { $mergeObjects: "$loop" }
}
}]
)
Результат
{
"loop" : {
"field1" : "1",
"field2" : "2",
"field3" : "3",
"field4" : "4",
"field5" : "5",
"field6" : "6"
}
}