簡體   English   中英

Flask的render_template()問題

[英]Flask's render_template() issue

我正在使用Flask Web應用程序。

要訪問內容和功能,您需要登錄。

但是,有些人,在登錄后,而不是加載完整的主頁,加載一個空白的“about:srcdoc”頁面。

我在整個主路由功能中放置了print語句,現在我知道這個錯誤只發生在返回render_template()開始運行之后(在render_template發送get請求之后,根據命令提示符)。

base.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

編輯2:如果您認為我應該在問題中包含其他一些信息,請隨意提及(即使您不知道解決方案)。 在沒有解決這個問題的情況下,該應用程序的穩定性不足以釋放意味着需要3周以上的努力。

EDIT3:打開的“about:srcdoc”頁面的html:

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

並且沒有控制台消息(在開發工具中)

似乎iframe中的一些組件正在將父級導航到about:scrdoc

我需要做的就是為iframes添加sandbox屬性並僅限制頂部導航。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM