带有Jinja2代码的html页面上href的正确语法是什么,允许在两个页面之间导航?第一个html模板有一个名称列表,而另一个有人员详细信息。
以下是listOfNames.html页面的代码,显示了名称列表。
<ul>
{% for rownum, row in listNames.iterrows() %}
<li><a href="/listNames/person/{{row.personId}}">{{ row.firstName }} {{ row.lastName }}</a></li>
{% endfor %}
</ul>
这是获取/放置(正确使用term?)listOfNames.html上的名称的server.py代码。
@app.route('/listNames/<bo>/')
def listNames(bo):
listNames = getListNames(bo)
return render_template('listOfNames.html', listNames=listNames)
这是personInformation.html的代码。
<main role="main" class="col-sm-9 ml-sm-auto col-md-10 pt-3">
<h1>{{ person.firstName }}
{{ person.lastName }}
</h1>
<h2>Office:
{{ person.bo }}
</h2>
<h2>Courses Completed
</h2>
<ul>
{% for rownum, row in personCompleted.iterrows() %}
<li><a href="/courses/{{row.courseId}}">
{{row.courseTitle}}
</a></li>
{% endfor %}
</ul>
</main>
这是server.py代码。
@app.route('/people/<person_id>')
def person(person_id):
person = getPersonOrganization(person_id)
personCompleted = getPersonCompleted(person_id)
return render_template('personInformation.html', person=person, personCompleted=personCompleted)
答案 0 :(得分:0)
执行此操作的最佳方法是使用Flask中的url_for()
功能。以下是您的新listOfPeople.html
模板,其中包含以下链接:
<ul>
{% for rownum, row in listNames.iterrows() %}
<li><a href="{{ url_for('person', person_id=row.personId) }}">{{ row.firstName }} {{ row.lastName }}</a></li>
{% endfor %}
</ul>
最好不要在模板中对您的网址进行硬编码,因为如果您需要重新组织它们,那么您需要在整个地方更新网址。使用url_for()
Flask会使用您在app.route
装饰器中提供的信息为您生成网址。