Проблема render_template () в Flask - PullRequest
4 голосов
/ 12 июня 2019

Я работаю над веб-приложением Flask.

Чтобы получить доступ к содержимому и функциям, необходимо войти в систему.

Но, ИНОГДА, сразу после входа в систему, а не загрузкиполная домашняя страница, загружена пустая страница about: srcdoc.

Я помещаю операторы печати во всю функцию домашней маршрутизации, и теперь я знаю, что эта ошибка происходит только ПОСЛЕ возврата, запускается render_template () (послезапрос get отправляется render_template, согласно командной строке).

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.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: HTML-код страницы about: srcdocчто открыто:

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

и нет консольных сообщений (в dev tools)

1 Ответ

0 голосов
/ 25 июня 2019

Кажется, какой-то компонент внутри iframes перемещал родительский элемент к примерно: scrdoc

Все, что мне нужно было сделать, это добавить атрибут песочницы в iframes и ограничить только навигацию сверху.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...