目标
我正在创建一个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>
答案 0 :(得分:1)
在layout.html
中,您定义了{% block body %}
,但是在home.html
中,您使用的是{% block content %}
。更改其中一个以匹配另一个,它应该可以工作。
答案 1 :(得分:0)
要从字典中读取Jinja模板,您需要将home.html中所有变量的语法更改为以下内容:
{{ post['username'] }}