无法通过烧瓶从MySQL检索数据

时间:2020-07-18 09:48:33

标签: python html python-3.x flask jinja2

我正在制作Flask网站应用程序,已经连接了MySQL数据库,但是无法将数据导入HTML文件中。数据应该显示在侧面导航中,但什么都没有显示(空白)。这样做的目的是避免对文本进行硬编码,以便我可以轻松更新需要相同文本的页面。

这些是我的导入和设置

from flask import Flask, render_template
from flask_mysqldb import MySQL


app = Flask(__name__)

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'my_password_changed'
app.config['MYSQL_DB'] = 'swebsite'


mysql = MySQL(app)

这是尝试检索数据的功能-数据正确打印

@app.route('/menu/internships')
def internships():
    cur = mysql.connection.cursor()
    cur.execute("SELECT * FROM professional")
    fetchdata = cur.fetchall()
    cur.close()
    datas = []
    for i in range(len(fetchdata)):
        datas.append(fetchdata[i][1])
    # print(datas)
    return render_template('internships.html', data = datas)

这是我要使用数据的地方

<div id="mySidenav" class="sidenav">
    {% for j in datas %}

    <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
    <a href="{{url_for('professional')}}">Organisational Experience</a>
    <a href="{{url_for('internships')}}">{{j[0]}}</a>
    <a href="{{url_for('projects')}}">Projects & Research</a>
    <a href="{{url_for('respon')}}">Positions of Responsibility</a>
    {% endfor %}
</div>


我已经更新了代码,再次在屏幕上什么也没打印

这是试图检索数据的功能

@app.route('/menu/internships')
def internships():
    cur = mysql.connection.cursor()
    cur.execute("SELECT * FROM professional")
    fetchdata = cur.fetchall()
    cur.close()
    datas = {}
    # for j in fetchdata:
    datas['first'] = f"{fetchdata[0][1]}"
    datas['second'] = f"{fetchdata[1][1]}"
    datas['third'] = f"{fetchdata[2][1]}"
    datas['fourth'] = f"{fetchdata[3][1]}"

    print(datas)
    return render_template('internships.html', data = datas)

这是我要使用数据的地方

<div id="mySidenav" class="sidenav">
    {% for j in data %}

    <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
    <a href="{{url_for('professional')}}">{{j['first']}}</a>
    <a href="{{url_for('internships')}}">{{j['second']}}</a>
    <a href="{{url_for('projects')}}">{{j['third']}}</a>
    <a href="{{url_for('respon')}}">{{j['fourth']}}</a>

    {% endfor %}
</div>

1 个答案:

答案 0 :(得分:0)

您正在将“数据”传递到模板,但是正在html中使用"datas"。通过"datas=datas"或将html更改为{% for j in data %}