【问题标题】:Bootstrap Flask render_form actionBootstrap Flask render_form 动作
【发布时间】:2021-06-25 02:07:22
【问题描述】:

我第一次使用 Flask 引导程序并且它有效

{% import "bootstrap/wtf.html" as wtf %}
<form method="POST" action="{{url_for('edit_ad', id=ad.id)}}" enctype="multipart/form-data">
    {{ form.hidden_tag() }}
    {{ wtf.form_field(form.title) }}
    {{ wtf.form_field(form.body) }}
    {{ wtf.form_field(form.img_url) }}
    {{ wtf.form_field(form.price) }}
    <div>
        <p>
            <button class="" type="submit" value="Edit">Edit</button>
        </p>
    </div>
</form>

但我想将其更改为 Bootstrap Flask 并使用 render_form。我在使用 url_for 时遇到问题

{% from 'bootstrap/form.html' import render_form %}
{{ render_form(form, action="{{url_for('edit_ad', id=ad.id)}}", method="POST", button_map={'edit_button': 'primary'}) }}

Here is my view:
@app.route('/edit_ad/<string:id>', methods=['GET', 'POST'])
@login_required
def edit_ad(id):

# more code
    return render_template('edit_ad.html', form=form, ad=ad)

我应该如何传递 id? 谢谢

【问题讨论】:

    标签: flask jinja2 bootstrap-flask


    【解决方案1】:

    你可以像这样传递变量,

    {% from 'bootstrap/form.html' import render_form %}
    {{ render_form(form, action="/edit_ad/{{ ad.id }}", method="POST", button_map={'edit_button': 'primary'}) }}
    

    【讨论】:

    • 谢谢,我试过了,但它重定向到 127.0.0.1:5000/edit_ad/%7B%ad.id%7D%7D 我最终再次使用了 wtf 表单,我正在使用 bootstrap,正如此处接受的评论中所推荐的那样 link
    • ad.id 是从 jinja 模板中的 flask 传递的合法变量吗?因为如果是,那么上面提到的代码应该可以工作。您可以通过传递这样的整数来测试我的语法。 action="/edit_ad/2
    • 是的,如果我只是发送一个数字,它就可以工作,如果我在页面上呈现它,例如&lt;h1&gt; {{ad.id}} &lt;/h1&gt; 它呈现正确的数字
    • 如果{{ ad.id }} 变量被显示并且action="/edit_ad/2" 有效,那么action="/edit_ad/{{ ad.id }} 也应该在同一个文件中有效。它的基本神术。你可以尝试把view的url改成@app.route('/edit_ad/&lt;int:id&gt;', methods=['GET', 'POST'])
    • 谢谢我试过了,但我仍然得到同样的东西。它适用于 /edit_ad/2,因为它调用 127.0.0.1:5000/edit_ad/2,但是当我使用 {{ad.id}} 时,它不会将其视为值。我找到了一种解决方法.. 但无论如何谢谢
    猜你喜欢
    • 2020-02-11
    • 2016-09-18
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    相关资源
    最近更新 更多