Python 将html报告转换为csv
我正在创建一个Flask应用程序,它根据用户输入创建一个表,然后允许用户通过列运行一个报告。用户应从数据库中选择一列并检索数据;在此之后,用户可以输入电子邮件,以便将报告发送到 报告功能可以工作,但在填写电子邮件条目后,它不会做任何事情。为了测试这一点,我刚刚尝试用一个逗号分隔的字符串值来显示该列 这不起作用,会带来: TypeError:view函数未返回有效响应。函数返回None或结束时没有返回语句 这不起作用,会带来:Python 将html报告转换为csv,python,csv,email,flask,sqlalchemy,Python,Csv,Email,Flask,Sqlalchemy,我正在创建一个Flask应用程序,它根据用户输入创建一个表,然后允许用户通过列运行一个报告。用户应从数据库中选择一列并检索数据;在此之后,用户可以输入电子邮件,以便将报告发送到 报告功能可以工作,但在填写电子邮件条目后,它不会做任何事情。为了测试这一点,我刚刚尝试用一个逗号分隔的字符串值来显示该列 这不起作用,会带来: TypeError:view函数未返回有效响应。函数返回None或结束时没有返回语句 这不起作用,会带来: TypeError: The view function did no
TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.
sendreport.py:
from flask import Flask, render_template, url_for, request, redirect, flash, session
from flask_mail import Mail, Message
app = Flask(__name__)
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey, select
meta = MetaData()
engine = create_engine("postgresql://username:password@localhost/test-db-02", echo = True)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class TestValue(Base):
__tablename__ = 'test_value'
id = Column('id', Integer, primary_key=True)
val1 = Column('val1', String(15))
val2 = Column('val2', String(15))
val3 = Column('val3', String(15))
val4 = Column('val4', String(15))
val5 = Column('val5', String(15))
def __init__(self, val1, val2, val3, val4, val5):
self.val1 = val1
self.val2 = val2
self.val3 = val3
self.val4 = val4
self.val5 = val5
Session = sessionmaker(bind=engine)
db_session = Session()
@app.route('/tablelog', methods=['GET', 'POST'])
def tablelog():
title = "Log Table"
category = request.form.get("val_category")
item1 = request.form.get("val_item1")
item2 = request.form.get("val_item2")
item3 = request.form.get("val_item3")
item4 = request.form.get("val_item4")
if request.method == 'GET':
data = db_session.query(TestValue).all()
return render_template('tablelog.html', title=title, data=data)
else:
db_entry = TestValue(category, item1, item2, item3, item4)
db_session.add(db_entry)
db_session.commit()
data = db_session.query(TestValue).all()
return render_template('tablelog.html', title=title, data=data)
@app.route('/reports', methods=['GET', 'POST'])
def reports():
title = "SPA Reports"
rv = request.form.get("report_val")
sendEmail = request.form.get("sendEmail")
sub_report = request.form.get("sub-btn")
val_data = db_session.query(TestValue).order_by(TestValue.id)
data = val_data.all()
if request.method == 'GET':
return render_template('reports.html', title=title, data=data)
elif rv == "val1" and sendEmail != None:
category = val_data.all()
if sub_report:
for d in category.id:
csv = str(f'{d}, ')
return f"{csv}"
return render_template('reports.html', title=title, category=category)
if __name__ == '__main__':
app.run(debug=True)
reports.html的代码片段:
{% if category %}
<table>
<tr>
<th>ID</th>
<th>CATEGORIES</th>
</tr>
{% for f in category %}
<tr>
<td>{{ f.id }}</td>
<td>{{ f.val1 }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
<br><br>
<div>
<input type="text" name="sendEmail" placeholder="Enter email here">
<button type="submit" name="sub" value="sub-btn">SEND EMAIL!</button>
</div>
应打印:
hello world from sinclair
发布调试问题时,请包括回溯,而不仅仅是错误消息。在
reports()
中,for循环中的returnf“{csv}”
语句看起来有点可疑。关于“可疑”表达式,str(f'{d}')
似乎有点多余。格式字符串就是字符串。哦,好的,对不起,它说的是关于#主体不能是none,引用如果rv是none,那么会引发一个TypeError。然后声明#确保主体是响应类的实例
hello world from sinclair