微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在flask中使用if语句仅在特定网址上呈现代码

如何解决如何在flask中使用if语句仅在特定网址上呈现代码

如果有人问过这个问题,我很抱歉,但在搜索 stackoverflow 后我无法找到答案。

基本上我试图在我的 jinja2 模板中使用 if 语句,以便如果 /login 页面是当前 url,登录模式会自动打开。原因是每个公共页面都有登录模式,但是当加载了仅对经过身份验证的用户可用的 url 时,我将其重定向登录(没有 /login 的唯一页面,因此 /login 共享主页模板)。所以模态需要在/login时自动打开。

这是我一直在我的模板中尝试的:

{% if request.url == url_for('login') %}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<script>
$(document).ready(function(){
    $("#login").modal('show');
});
</script>
{% endif %}

如果我将该代码添加到我的模板中,而没有 if 语句,它确实可以正常工作,并且每个页面加载都会在打开模式的情况下加载页面。我的 if 语句显然是问题所在,因为没有任何页面使用该模板,包括 /login 加载并打开模态。我尝试了很多事情都无济于事。任何有关正确 if 语句的帮助或实现我的目标的更好方法都将不胜感激。在此先感谢您的冗长解释。

解决方法

感谢 PGHE 对我的问题发表评论,答案很容易找到。 在检查 {{ request.url }} 和 {{ url_for('login') }} 的值时,我得到以下结果:

/login 
127.0.0.1:5000/login

所以我将 request.url 从 if 语句更改为 request.path 使其完美运行。

谢谢PGHE

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。