Flask Jinja Route

时间:2018-02-09 21:20:02

标签: python flask jinja2

带有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)

1 个答案:

答案 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装饰器中提供的信息为您生成网址。