我试图从Flask终结点制作一个PDF文档,该终结点基本上是从MySql数据库中检索值并将其显示在HTML页面上。我尝试了jsPDF,但无法获得结果这是我的Python代码:from flask import Flask, render_template, requestfrom flask_mysqldb import MySQLapp = Flask(__name__)# configure dbapp.config['MYSQL_HOST'] = 'localhost'app.config['MYSQL_USER'] = 'username'app.config['MYSQL_PASSWORD'] = 'dbpassword'app.config['MYSQL_DB'] = 'flaskapp'mysql = MySQL(app)@app.route('/', methods=['GET', 'POST'])def alpha(): if request.method == 'POST': # Fetch the form data userDetails = request.form name = userDetails['name'] email = userDetails['email'] cur = mysql.connection.cursor() cur.execute("INSERT INTO users(name,email) VALUES(%s,%s)", (name, email)) mysql.connection.autocommit(on=True) cur.close() return 'success' return render_template('index.html')@app.route('/users')def users(): cur = mysql.connection.cursor() resultValue = cur.execute("SELECT * from users") if resultValue > 0: userDetails = cur.fetchall() return render_template('users.html', userDetails=userDetails)@app.route('/showpdf')def showpdf(): return render_template('showpdf.html')if __name__ == '__main__': app.run()以下是html页面:users.html<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Display Records From DB</title></head><body><style> th { background-color: orange; }</style><table border="1"> <tr> <th> Name </th> <th> Email Id </th> </tr> {% for users in userDetails %} <tr> <td>{{users[0]}}</td> <td>{{users[1]}}</td> </tr> {% endfor %}</table></body></html>
3 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
我认为您误解了后端是flask和前端是html和javascript。
当您点击<a>
标记时,浏览器会将您的请求发送到支持的烧瓶,但您的文件系统中没有任何pdf文档。这就是为什么您收到404错误的原因。
可能是您可以在前端生成pdf(我不熟悉jsPDf库)。至少要做以下事情:
编写可以使用js生成pdf的函数或其他函数。
在您的showpdf.html中放一个按钮或其他东西,当用户单击该按钮时,会有一个事件,使用第1步的功能作为事件侦听器,然后为用户生成pdf。
慕标5832272
TA贡献1966条经验 获得超4个赞
基于Ajax1234解决方案和您遇到的问题。
您的问题是flask无法找到安装flask_weasyprint的位置。
如果您使用的是Windows,则必须导航到/ script目录才能安装
cd C:\flaskproject\flask\Scripts
C:\flaskproject\flask\Scripts>pip install Flask-WeasyPrint
然后,当您运行您的应用程序时。一切都会很好
添加回答
举报
0/150
提交
取消