Python 烧瓶上无信息闪烁,无错误信息 背景和问题
当用户使用Flask在web应用程序上正确或错误地输入表单时,我尝试实现一个消息闪烁功能 当我执行以下程序时,成功地将数据从窗体插入数据库 但是,调用消息闪烁失败,并且没有错误消息。单击“创建”按钮后,仅显示插入的数据,并且在我当前的程序上没有消息闪烁 我应该如何修复我的程序 公文 阅读!,我不确定我应该如何为我的程序使用密钥 程序 行刑Python 烧瓶上无信息闪烁,无错误信息 背景和问题,python,html,postgresql,flask,sqlalchemy,Python,Html,Postgresql,Flask,Sqlalchemy,当用户使用Flask在web应用程序上正确或错误地输入表单时,我尝试实现一个消息闪烁功能 当我执行以下程序时,成功地将数据从窗体插入数据库 但是,调用消息闪烁失败,并且没有错误消息。单击“创建”按钮后,仅显示插入的数据,并且在我当前的程序上没有消息闪烁 我应该如何修复我的程序 公文 阅读!,我不确定我应该如何为我的程序使用密钥 程序 行刑 $ FLASK_APP=app.py FLASK_DEBUG=true flask run app.py 从flask导入flask、flash、rend
$ FLASK_APP=app.py FLASK_DEBUG=true flask run
app.py
从flask导入flask、flash、render_模板、请求、重定向、url_for、中止、jsonify
从flask_sqlalchemy导入sqlalchemy
导入系统
app=烧瓶(名称)
app.secret_key=b“u5”y2L“F4Q8z\n\xec]/”
app.config['SQLALCHEMY\u DATABASE\u URI']='postgres://username@localhost:5432/sample'
db=SQLAlchemy(应用程序)
类Todo(db.Model):
__tablename_uu='todos'
id=db.Column(db.Integer,主键=True)
name=db.Column(db.String)
city=db.Column(db.String(120))
#TODO:使用Flask Migrate实现任何缺少的字段,作为数据库迁移
定义报告(自我):
返回f“”
db.create_all()
@app.route('/todos/create',methods=['POST'])
def create_todo():
错误=错误
正文={}
尝试:
name=请求。表单['name']
城市=请求。表格['city']
todo=todo(名称=名称,城市=城市)
如果名称==“”:
flash(“写下你的名字”,“失败”)
elif city==“”:
flash(“写下你的城市”,“失败”)
db.session.add(todo)
db.session.commit()
body['name']=todo.name
body['city']=todo.city
flash(“已提交”、“成功”)
除:
错误=真
db.session.rollback()
打印(sys.exc_info())
最后:
db.session.close()
如果出现错误:
中止(400)
其他:
返回jsonify(正文)
@应用程序路径(“/”)
def index():
返回呈现模板('index.html',data=Todo.query.all())
index.html
文本应用程序
.隐藏{
显示:无;
}
名称
城市
出了点问题!
{数据%中d的%s}
- {{d.name}
- {{d.city}
{%endfor%}
const nameInput=document.getElementById('name');
const cityInput=document.getElementById('city');
document.getElementById('form').onsubmit=function(e){
e、 预防默认值();
const name=nameInput.value;
const city=cityInput.value;
descInput.value='';
获取('/todos/create'{
方法:“POST”,
正文:JSON.stringify({
“名称”:名称,
“城市”:城市,
}),
标题:{
“内容类型”:“应用程序/json”,
}
})
.then(response=>response.json())
。然后(jsonResponse=>{
log('response',jsonResponse);
li=document.createElement('li');
li.innerText=名称;
li.innerText=城市;
document.getElementById('todos').appendChild(li);
document.getElementById('error')。className='hidden';
})
.catch(函数(){
document.getElementById('error')。className='';
})
}
环境
Python 3.6.0
烧瓶1.1.1
SQLAlchemy 1.3.10
psql 11.5闪现消息不会自动呈现,您必须这样做。以下是来自以下网站的示例jinja模板代码:
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<input type= "text" name="name" required/>