Я пытаюсь реализовать простой веб-сайт меню ресторана, в котором отображается список ресторанов и их пунктов меню.TemplateSyntaxError без ключевого слова
newMenuItem
- это функция, которая добавляет новый пункт меню в ресторан. MenuItem
- таблица пунктов меню, Restaurant
- таблица ресторанов, а restaurantmenu
- это функция, которая отображает список пунктов меню в ресторане.
@app.route('/restaurants/<int:restaurant_id>/new', methods = ['GET', 'POST'])
def newMenuItem(restaurant_id):
if request.method == 'POST':
newItem = MenuItem(name = request.form['name'], restaurant_id = restaurant_id)
session.add(newItem)
session.commit()
flash("new menu item created!")
return redirect(url_for('restaurantmenu', restaurant_id = restaurant_id))
else:
return render_template('newmenuitem.html', restaurant_id = restaurant_id)
restaurantmenu
функция
@app.route('/restaurants/<int:restaurant_id>/', methods = ['GET', 'POST'])
def restaurantmenu(restaurant_id):
restaurant = session.query(Restaurant).filter_by(id=restaurant_id).one()
items = session.query(MenuItem).filter_by(restaurant_id=restaurant.id)
return render_template('menu.html', restaurant = restaurant, items = items)
menu.html
шаблон отображает список пунктов меню, которое где я пытаюсь показать флэш-сообщение. Его код
<html>
<body>
<h1>{{restaurant.name}}</h1>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{message}}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<a href='{{url_for('newMenuItem', restaurant_id = restaurant.id)}}'>Create New Item</a>
{% for i in items %}
<div>
<p>{{i.name}}</p>
<p>{{i.description}}</p>
<p> {{i.price}} </p>
<a href='{{url_for('editMenuItem', restaurant_id = restaurant.id, menu_id = i.id)}}'>Edit</a>
<a href='{{url_for('deleteMenuItem', restaurant_id = restaurant.id, menu_id = i.id)}}'>Delete</a>
<br>
</div>
{% endfor %}
</body>
</html>
Я понимаю, что «с» ключевым словом используется для очистки ресурсов как потоковое видео, но в этом случае, если я удалю это слово, я получаю TemplateSyntaxError при попытке отобразить пункты меню.
TemplateSyntaxError: Encountered unknown tag 'messages'
Я не понимаю, как ключевое слово «с» заставляет все это работать. Без него не следует ли массивы сверкающих сообщений просто сохранять в переменную messages
, к которой должен обращаться следующий цикл for
?
Спасибо! Понял. –