【发布时间】:2020-07-18 09:48:33
【问题描述】:
我正在制作一个烧瓶网站应用程序,我已经连接了一个 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()">×</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()">×</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>
【问题讨论】:
-
您正在将“数据”传递给您的模板,但您在 html 中使用“数据”。要么传递“
datas=datas”,要么将 html 更改为{% for j in data %} -
@Ehtesham Siddiqui 谢谢,但现在它在我的屏幕上打印了多次,我怎样才能将值分配给变量以便我打印呢?目前它不接受等号。
-
所以你想在模板中赋值?使用 jinja2 中的 {% set %} jinja.palletsprojects.com/en/2.10.x/templates/#variables
标签: python html python-3.x flask jinja2