【问题标题】:Flask : url_for with <a> tag doesn't get rendered in browserFlask:带有 <a> 标记的 url_for 不会在浏览器中呈现
【发布时间】:2016-01-31 07:28:19
【问题描述】:

这是我的模板代码(menu.html):

<html>

<body>

<h1>{{restaurant.name}}</h1>


{% 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>

</br>
<a href = '{{url_for('deleteMenuItem', restaurant_id = restaurant.id, menu_id = i.id ) }}'>Delete</a>

</div>


{% endfor %}
</body>

</html>

这是我调用render_template()函数的代码:

@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)
    return render_template('menu.html',restaurant=restaurant,items=items)

进口:

from flask import Flask, render_template, url_for

我的问题是我的 EditDelete 锚标记根本没有被渲染!为什么会这样?

这里是 DOM :

编辑:1 事实上,我在menu.html 中所做的任何更改都不会改变!即使它像添加静态文本一样简单。

【问题讨论】:

  • 您确定没有menu.html 的两份副本吗?可能在另一个文件夹中?
  • 我不知道 Flask,但尝试将外部单引号更改为双引号。 &lt;a href="{{url_for('editMenuItem', ... }}"&gt;Edit&lt;/a&gt;
  • @PM2Ring :我想这就是问题所在!需要双引号!请回答问题,我将其标记为answer
  • @AbhishekGhosh:好的,虽然我觉得impostor 在回答 Flask 问题。 :)
  • 我刚刚被告知我的回答不能解决您的实际问题。

标签: python html flask-sqlalchemy url-for


【解决方案1】:

您的问题是您试图在单引号字符串中使用单引号。您可能可以通过使用反斜杠转义引号来解决这个问题:\'。但是更简单的方法是将外引号更改为双引号,即更改

<a href='{{url_for('editMenuItem', restaurant_id = restaurant.id,
    menu_id = i.id) }}'>Edit</a>

<a href="{{url_for('editMenuItem', restaurant_id = restaurant.id,
    menu_id = i.id) }}">Edit</a>

【讨论】:

  • 谢谢!我也会尝试使用转义文字!
【解决方案2】:

你能在模板中试试这个代码吗?

<a href='{{url_for('editMenuItem', restaurant_id=restaurant.id, menu_id=items.id) }}'>Edit</a>

</br>

<a href = '{{url_for('deleteMenuItem', restaurant_id=restaurant.id, menu_id=items.id) }}'>Delete</a>

模板中不应提供ii.id),而应提供itemsitems.id),因为那是后端代码中的参数名称(render_template('menu.html',restaurant=restaurant,items=items))。

关于模板的所有更改,可能需要清除缓存或使用Ctrl + Shift + R键盘组合?

希望对你有帮助。

【讨论】:

  • 对不起..我没有添加menu.html..的完整代码。但是请看更新的代码。我有一个for 循环,在其中我定义了变量i
  • @AbhishekGhosh 没关系,直到现在我才看到。干得好 PM 2Ring。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
  • 2016-01-14
  • 1970-01-01
相关资源
最近更新 更多