这是我的代码:
from flask import Flask
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from database_setup import Base, Restaurant, MenuItem
app = Flask(__name__)
engine = create_engine('sqlite:///restaurantmenu.db')
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()
@app.route('/')
@app.route('/restaurants/<int:restaurant_id>/')
def restaurantMenu(restaurant_id):
restaurant = session.query(Restaurant).filter_by(id=restaurant_id).one()
items = session.query(MenuItem).filter_by(restaurant_id=restaurant.id)
output = ''
for i in items:
output += i.name
output += '</br>'
output += i.price
output += '</br>'
output += i.description
output += '</br>'
output += '</br>'
return output
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0', port=5000)
我输入以下网址运行该文件:
localhost:5000/restaurants/2
我得到的只是一个空白页面。我的GitBash或浏览器或其他任何地方都没有出现任何错误。
我运行了这个简单的代码:
from flask import Flask
app = Flask(__name__)
@app.route('/')
@app.route('/hello')
def HelloWorld():
return "Hello World"
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0', port=5000)
这完美运行。我做错了什么?
编辑:1
尝试调试代码并注意到代码没有进入for i in items:
循环。
@app.route('/')
@app.route('/hello')
def restaurantMenu():
restaurant = session.query(Restaurant).first()
items = session.query(MenuItem).filter_by(restaurant_id = restaurant.id)
output = ''
print restaurant.name
print restaurant.id
if not items :
print "No menu items!"
else:
print "There are menu items!"
for i in items:
print "In items loop!"
output += i.name
output += '<br>'
return output + "Hello"
答案 0 :(得分:1)
基本上,您需要namespace __is_class_imp
{
template <class _Tp> char __test(int _Tp::*);
template <class _Tp> __two __test(...);
}
template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_class
: public integral_constant<bool, sizeof(__is_class_imp::__test<_Tp>(0)) == 1 && !is_union<_Tp>::value> {};
处的all()功能。您正在查询但是您没有获取结果。
所以你的代码就像这样
items
现在它将取决于你的数据库中的条目,如果你有,否则它将返回一个空的@app.route('/')
@app.route('/restaurants/<int:restaurant_id>/')
def restaurantMenu(restaurant_id):
restaurant = session.query(Restaurant).filter_by(id=restaurant_id).one()
items = session.query(MenuItem).filter_by(restaurant_id=restaurant.id).all()
output = ''
for i in items:
output += i.name
output += '</br>'
output += i.price
output += '</br>'
output += i.description
output += '</br>'
output += '</br>'
return output
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0', port=5000)
。因此,如果您有结果,则可以打印并检查或循环并将其呈现给模板。
这应该可以解决您的问题