帖子未显示在Flask的首页上

时间:2019-01-18 17:44:57

标签: html flask

目标

我正在创建一个Flask网站,以用作自定义生物信息学管道的UI。我尝试设计的方式是使用户以多页形式(类似于在线订购中的结帐流程)填写管道参数(例如,项目名称,数据类型,样本数等) ),然后将这些参数作为单独的“帖子”保存到用户的帐户页面。

问题

我一直在在线阅读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 :(得分:1)

layout.html中,您定义了{% block body %},但是在home.html中,您使用的是{% block content %}。更改其中一个以匹配另一个,它应该可以工作。

答案 1 :(得分:0)

要从字典中读取Jinja模板,您需要将home.html中所有变量的语法更改为以下内容:

{{ post['username'] }}