【问题标题】:if statement to determine which route is used in jinja template, flaskif 语句判断 jinja 模板中使用哪条路由,flask
【发布时间】:2020-07-11 19:18:58
【问题描述】:

我有两个使用一个模板的视图。

@users.route("/one")
@login_required
def one(username):
     return render_template('follower.html') 

@users.route("/two")
@login_required
def two(username):
     return render_template('follower.html') 

在 jinja 模板 (follower.html) 中,如果使用这样的路线一,我正在尝试执行程序:

{% if url_for('users.one')  %}
    execute program
{% endif %}

但似乎我做错了。请问确定使用哪条路线的正确方法是什么?

【问题讨论】:

    标签: templates flask jinja2


    【解决方案1】:

    您可以在模板文件中简单地编写一个条件来检查 request.endpoint 是否等于所需路由的函数名称,在本例中为 one,如下例所示:

    {% if request.endpoint == 'one'  %}
        execute program
    {% endif %}
    

    这样,您不会对路线功能进行任何更改。

    【讨论】:

      【解决方案2】:

      你不能有两个同名的函数——它们都被命名为two

      【讨论】:

        【解决方案3】:

        实现此目的的一个简单方法是传入一个标志。例如,

        @users.route("/one")
        @login_required
        def one(username):
            return render_template('follower.html', one=True)
        

        然后在模板中检查它

        {% if one %}
            execute program
        {% endif %}
        

        来自two(),您将填充one=False

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-18
          • 2021-01-04
          • 2020-01-26
          • 1970-01-01
          • 1970-01-01
          • 2018-04-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多