Сообщения не отображаются на домашней странице в Flask - PullRequest
0 голосов
/ 18 января 2019

Цель

Я создаю веб-сайт Flask, который будет служить пользовательским интерфейсом для пользовательского конвейера биоинформатики. Я пытаюсь спроектировать его так, чтобы пользователь заполнял параметры конвейера (например, Имя проекта, Тип данных, Количество образцов и т. Д.) В многостраничной форме (что-то вроде процесса оформления заказа при онлайн-заказе. ), а затем я хотел бы, чтобы эти параметры были сохранены на странице учетной записи пользователя в виде отдельных «сообщений».

Выпуск

Я следовал интерактивному учебнику Flask (https://www.youtube.com/watch?v=QnDWIZuWYW0&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH&index=2)) о том, как сохранять «сообщения» (параметры конвейера) на панели пользователя, предоставляя поддельные или образцы «сообщений» в шаблон HTML панели, но вообще ничего не видно. Что я делаю не так?

Исходный код

routes.py:

posts = [
            {
                'username': 'claudiadast',
                'date_posted': 'September 22, 2018',
                'stack_name': 'wgs-test-stack',
                'start_point': 'fastq',
                'input_uri': 's3://pipeline-validation/smallfq/',
                'build': 'GRCh38',
                'ome': 'wgs',
                'project_id': 'summerwater598'
            },
            {
                'username': 'claudiadast',
                'date_posted': 'September 10, 2018',
                'stack_name': 'clinical-exome',
                'start_point': 'fastq',
                'input_uri': 's3://pipeline-validation/Clinex/',
                'build': 'GRCh38',
                'ome': 'wes',
                'project_id': 'summerwater598'
            }
        ]


@app.route('/')
@app.route('/home')
def home():
    return render_template('home.html', posts=posts)

home.html:

{% extends "layout.html" %}
{% block content %}
    {% for post in posts %}
        <h1>{{ post.stack_name }}</h1>
        <p>{{ post.username }} on {{ post.date_posted }}</p>
        <p>Pipeline Parameters:</p>
        <p>{{ post.stack_name }}</p>
        <p>{{ post.start_point }}</p>
        <p>{{ post.input_uri }}</p>
        <p>{{ post.build }}</p>
        <p>{{ post.ome }}</p>
        <p>{{ post.project_id }}</p>
    {% endfor %}
{% endblock content %}

layout.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Psychcore Pipeline</title>
        <link rel="stylesheet" href="static/site.css"
    </head>
    <body>
        {% include 'includes/_navbar.html' %}
        <div class="container">
        {% block body %}{% endblock %}
        {% with messages = get_flashed_messages(with_categories=true) %}
            {% if messages %}
                {% for category, message in messages %}
                    <div class="alert alert-{{ category }}">
                        {{ message }}
                    </div> 
                {% endfor %}
            {% endif %}
        {% endwith %}
        </div>

        <script src='https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js'></script>
    </body>
</html>

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Для чтения шаблона jinja из dict вам нужно изменить синтаксис всех переменных на следующий в home.html:

{{ post['username'] }}
0 голосов
/ 18 января 2019

В вашем layout.html вы определяете {% block body %}, однако в вашем home.html вы используете {% block content %}. Измените одно из них так, чтобы оно совпадало с другим, и оно должно работать.

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