Python-Flask我想在html页面上以干净的格式显示Mongodb中的数据



我在Mongodb数据库中有一个问题数据列表。我想在html页面上逐个显示问题。这是我的烧瓶代码

from flask import Flask, render_template, request, url_for
from pymongo import MongoClient
from bson.json_util import dumps
import json
client = MongoClient('localhost:27017')
db = client.girish
app = Flask(__name__)
@app.route("/questions", methods = ['GET'])
def questions():
try:
names = db.questions.find({},{"ques":1,"options":1,"_id":0,"quesid":1,"one_answers":1}).limit(10)
return render_template('index.html', names=names)
#return dumps(names)
except Exception as e:
return dumps({'error' : str(e)})
@app.route("/answers", methods = ['POST'])
def answers():
try:
data = json.loads(request.data)
quesid = data['quesid']
yourans = data['yourans']
if quesid and yourans:
status = db.myanswers.insert_one({
"quesid" : quesid,
"yourans" : yourans
})
return dumps({'message' : 'SUCCESS'})
except Exception as e:
return dumps({'error' : str(e)})
@app.route("/myanswers", methods = ['GET'])
def myanswers():
try:
answers = db.myanswers.find({},{"quesid":1,"yourans":1})
return dumps(answers)
except Exception as e:
return dumps({'error' : str(e)})
@app.route("/check/<id>", methods = ['GET','POST'])
def check(id):
try:
doc=db.questions.find({'quesid':float(id)})
return dumps(doc)
except Exception as e:
return dumps({'error': str(e)})


if __name__ == '__main__':
app.run(port='5002',debug = True)

我可以用什么可能的方式在html页面上显示monodb中的数据??我是python网络开发的新手。请详细介绍一下流程。

这是我使用python 的mogodb注入代码

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["girish"]
mycol = mydb["questions"]
mylist = [
{
"ques" : "what is test?",
"options" : [
{
"op1" : "test",
"op2" : "test",
"op3" : "test"
}
],
"quesid" : 1,
"one_answers" : 1
},
{
"ques" : "what is test2?",
"options" : [
{
"op1" : "test",
"op2" : "test",
"op3" : "test"
}
],
"quesid" : 2,
"one_answers" : 1
},
{
"ques" : "what is test3?",
"options" : [
{
"op1" : "test",
"op2" : "test",
"op3" : "test"
}
],
"quesid" : 3,
"one_answers" : 1
},
{
"ques" : "what is test4?",
"options" : [
{
"op1" : "test",
"op2" : "test",
"op3" : "test"
}
],
"quesid" : 4,
"one_answers" : 1
},
{
"ques" : "what is test5?",
"options" : [
{
"op1" : "test",
"op2" : "test",
"op3" : "test"
}
],
"quesid" : 5,
"one_answers" : 1
},
]
x = mycol.insert_many(mylist)

如何创建html页面以及如何链接到我的数据库?

如何创建HTML页面

Flask使用一种名为jinja templates的东西,它有一个特定的语法。它将HTML结构和您的数据结合起来,返回一个HTML页面,该页面填充了要在浏览器中显示的数据

如何链接到我的数据库

我看到您正在使用PyMongo从MongoDB中馈送和读取数据,这非常完美。

现在是链接部分,

创建一个python函数来访问数据库中的数据,将其放入python变量中,使用所有必需的逻辑,然后将该python变量传递到html模板。您必须提供一个唯一的url,网络浏览器将使用该url使用@app.route 调用此功能

我正在编写一个示例代码来显示来自questions集合的所有问题

@app.route("/questions", methods = ['GET'])
def questions():
try:
questions = db.questions.find({},{"ques":1,"one_answers":1})
return render_template('questions.html', questions = questions)
except Exception as e:
return dumps({'error' : str(e)})

现在呈现数据的模板-Jinja2模板提供了一种在html文件中显示python变量值的方法。Jinja允许您在适当的用例中使用条件语句(if else(以及循环。

问题.html

<!doctype html>
<html>
<body>
{% for question in questions %}
<h3>{{question["ques"]}}</h3>
{% endfor %}
</body>
</html>

相关内容

  • 没有找到相关文章

最新更新