python - Flask 的 render_template() 问题

标签 python html selenium http flask

我正在开发 Flask 网络应用程序。

要访问内容和功能,您需要登录。

但是,有时,在登录之后,加载的不是完整的主页,而是一个空白的“about:srcdoc”页面。

我在整个 home 路由函数中放置了 print 语句,现在我知道这个错误只会在 return render_template() 开始运行之后发生(在 render_template 发送 get 请求之后,根据命令提示符)。

基础.html:

<html>
    <head>
        <title>Veritas Annotator</title>
    </head>
    <body>
        <script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
        {%if session['logged_in']%}
        <div><h4><a href="/">Annotator</a> | Logged in as "{{ session['username'] }}" | <a href="/logout">Logout</a></h4></div>
        <hr>
        {%else%}
        <div><h4><a href="/register">Register</a> | <a href="/login">Login</a></h4></div>
        <hr>
        {%endif%}
        {% block content %}{% endblock %}
        <style>
        body{
            margin: 0;
            padding: 0;
            }
        .column{
            width: 40%;
            padding: 10px;
            }

        .left{
            float: left;
            }

        .right{
            float: right;
            }

        .row:after {
            content: "";
            display: table;
            clear: both;
            }

        h4 {
            color: black;
            text-align: center;
            font-family: Arial;
            font-size: 20px;
            vertical-align: bottom;
            }
        </style>
    </body>
</html>

index.html(为清楚起见缩短):

{% extends "base.html" %}
{% block content %}
{% if not session['logged_in'] %}
    <h4>Please, log in to annotate.</h4>
{% else %}
    {% if t1,t2 %}

<meta name="viewport" content="width=device-width, initial-scale=1">
<div class="row" style="width: 100%; height: 80%; min-height: 600px;">
    <div class="column left" style="width:50%; position: relative; display: inline-block; margin: 0; border: 0; padding: 0;">
      <iframe id="cframe" style="display: block" width="100%" height="100%" srcdoc="{{t1}}"></iframe>
    </div>
    <div class="column right" style="width:50%; position: relative; display: inline-block; margin: 0; border: 0; padding:0;">
      <iframe id="oframe" style="display: block" width="100%" height="100%" srcdoc="{{t2}}"></iframe>
    </div>
</div>
    {% endif %}
{% endif %}
{% endblock %}

Python 代码段(为清楚起见,变量较少):

return render_template('index.html', t1=c_body, t2=o_body)

其中c_body、o_body都是使用selenium的browser.page_source获取的页面源


根据命令提示符,在该错误之前发生的最后一件事是(请注意,这并不总是错误之前的 http 代码,有时它是代码 200 而不是 404):

"GET /api-proxy/-/locale_data/rendr-fe/de-DE/bbd065fad57e0e1eeb40f4f3d5045acf_b8cf454f8216fc48b02d6b403858fbbe2fa3ef36.js HTTP/1.0" 404 -

如果有人了解该请求的含义或之前遇到过此问题,我将非常感谢您的帮助。我已经在网上搜索了几天,但我似乎找不到任何来源来解释正在发生的事情。

EDIT1: 完整代码在这里 => https://github.com/MohamedMoustafaNUIG/AnnotatorVM

EDIT2:如果您认为我应该在问题中包含一些其他信息,请随时提及(即使您不知道解决方案)。如果不解决这个问题,该应用程序就不够稳定,无法发布,这意味着 3 周以上的努力付之东流。

EDIT3: 打开的“about:srcdoc”页面的 html:

<html>
<head></head>
<body></body>
</html>

并且没有控制台消息(在开发工具中)

最佳答案

似乎 iframe 中的某些组件正在将父级导航到 about:scrdoc

要解决这个问题,我需要做的就是将沙箱属性添加到 iframe 并仅限制顶部导航。

关于python - Flask 的 render_template() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56565060/

相关文章:

javascript - 无法通过 FirefoxDriver 访问全局变量

python - SciPy:从 PMF 生成自定义随机变量

Javascript-Web 蓝牙 API GATT 错误 : Not supported

javascript - 如何使隐藏的div向下滑动而不影响同一行的其他元素

HTML CSS : Fixed Menu with submenu, 悬停在菜单上之前出现子菜单

java - 我们如何通过批处理文件运行 cucumber 测试?

java - 警报 - Selenium

Python 线程定时器初始守护进程

python - 将 python 输出为 python 可读的格式

python - 如何清理我的 Python 安装以重新开始