Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-Flask我想以干净的格式在html页面上显示Mongodb中的数据_Python_Mongodb_Web_Flask_Flask Restful - Fatal编程技术网

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

Python-Flask我想以干净的格式在html页面上显示Mongodb中的数据,python,mongodb,web,flask,flask-restful,Python,Mongodb,Web,Flask,Flask Restful,我在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 = Fl

我在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,"ans":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页面以及如何与数据库链接?

如何创建html页面?

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

如何链接我的数据库?

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

现在是连接部分,

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

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

@app.route("/questions", methods = ['GET'])
def questions():
    try:
        questions = db.questions.find({},{"ques":1,"ans":1})
        return render_template('questions.html', questions = questions)
    except Exception as e:
        return dumps({'error' : str(e)})
现在,呈现数据的模板- Jinja2模板提供了一种在html文件中显示python变量值的方法。Jinja允许您使用条件语句(if-else)以及适当用例的for循环

Questions.html

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

{问题%中的问题的百分比}
{{问题[“问题”]}
{%endfor%}
<!doctype html>
<html>
   <body>
         {% for question in questions %}
            <h3>{{question["ques"]}}</h3>
         {% endfor %}
   </body>
</html>