金賈模板
與 Meteor.js 類似,Flask 與前端模板服務完美整合。Flask 預設使用 Jinja Templating。模板允許在 HTML 檔案中使用小的程式碼片段,例如條件或迴圈。
當我們渲染模板時,模板檔名之外的任何引數都會傳遞到 HTML 模板服務中。以下路由將使用者名稱和連線日期(從其他地方的函式)傳遞到 HTML。
@app.route("/users/<username>)
def profile(username):
joinedDate = get_joined_date(username) # This function's code is irrelevant
awards = get_awards(username) # This function's code is irrelevant
# The joinDate is a string and awards is an array of strings
return render_template("profile.html", username=username, joinDate=joinDate, awards=awards)
渲染此模板時,它可以使用從 render_template()
函式傳遞給它的變數。以下是 profile.html
的內容:
<!DOCTYPE html>
<html>
<head>
# if username
<title>Profile of {{ username }}</title>
# else
<title>No User Found</title>
# endif
<head>
<body>
{% if username %}
<h1>{{ username }} joined on the date {{ date }}</h1>
{% if len(awards) > 0 %}
<h3>{{ username }} has the following awards:</h3>
<ul>
{% for award in awards %}
<li>{{award}}</li>
{% endfor %}
</ul>
{% else %}
<h3>{{ username }} has no awards</h3>
{% endif %}
{% else %}
<h1>No user was found under that username</h1>
{% endif %}
{# This is a comment and doesn't affect the output #}
</body>
</html>
以下分隔符用於不同的解釋:
{% ... %}
表示宣告{{ ... }}
表示輸出模板的表示式{# ... #}
表示註釋(不包含在模板輸出中){# ... ##
意味著該行的其餘部分應該被解釋為一個宣告