溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Flask框架學(xué)習(xí)筆記之模板操作實(shí)例詳解

發(fā)布時間:2020-09-13 01:45:04 來源:腳本之家 閱讀:154 作者:Cytues 欄目:開發(fā)技術(shù)

本文實(shí)例講述了Flask框架學(xué)習(xí)筆記之模板操作。分享給大家供大家參考,具體如下:

flask的模板引擎是Jinja2。

引入模板的好處是增加程序的可讀性和易維護(hù)性,從而不用將一堆html代碼塞在視圖函數(shù)中。

還是以hello world為例。最基礎(chǔ)的調(diào)用模板修飾文本。

# 根網(wǎng)址
@app.route('/')
def index():
  # return render_template("index.html")
  # 可以給模板傳入文本content修飾
  content = "Hello World!"
  return render_template("index.html", content = content)

index模板,用{{}}表示變量。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <!--<h2>Hello World!</h2>></!-->
  <h2>{{ content }}</h2>
</body>
</html>

Flask框架學(xué)習(xí)筆記之模板操作實(shí)例詳解

這里定義一個類以傳入變量。

class User(object):
  def __init__(self, user_id, user_name):
    self.user_id = user_id
    self.user_name = user_name

傳參

# 通過調(diào)用類的實(shí)例方法給模板傳遞參數(shù)修飾
@app.route('/user')
def user_index():
  user = User(520, "loli")# user_id, user_name
  return render_template("user_index.html", user=user)

user_index模板,僅顯示user_name。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h2>Hello {{ user.user_name }}</h2>
</body>
</html>

Flask框架學(xué)習(xí)筆記之模板操作實(shí)例詳解

在模板中實(shí)現(xiàn)if語句

# 在模板中使用if語句
@app.route('/query_user/<user_id>')
def query_user(user_id):
  user = None
  # 如果傳入的id為520則調(diào)用實(shí)例
  if int(user_id) == 520:
    user = User(520, 'loli')

  return render_template("user_id.html", user=user)

user_id模板,用{% %}包裹if語句,若user不為None(也就是傳入了name),則顯示if下語句,否則顯示else下語句。

最后一定要加上{% endif %}表示判斷語句結(jié)束。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  {% if user %}
    <h2>hello {{ user.user_name }}</h2>
  {% else %}
    <h2>no this user</h2>
  {% endif %}

</body>
</html>

Flask框架學(xué)習(xí)筆記之模板操作實(shí)例詳解

Flask框架學(xué)習(xí)筆記之模板操作實(shí)例詳解

在模板中使用for循環(huán)語句

@app.route('/users')
def user_list():
  users = []
  for i in range(1, 11):
    user = User(i, "loli" + str(i))
    users.append(user)# 將user添加到users
  return render_template("user_list.html", users = users)# 在模板中修飾users

user_list模板,同樣的,for循環(huán)語句也要用{% %}包裹起來,需要用{% endfor %}表示for循環(huán)結(jié)束。這里傳入id和name兩個參數(shù)。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  {% for user in users %}
    {{ user.user_id }} -- {{ user.user_name }}<br>
  {% endfor %}
</body>
</html>

Flask框架學(xué)習(xí)筆記之模板操作實(shí)例詳解

模板的繼承。模板繼承的初衷也是為了代碼更加簡單,更易維護(hù),將相同部分的代碼提到一個基類模板,有點(diǎn)類似于類的繼承。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <div>
    <h2>I love you {{ user.user_name }}</h2>
  </div>
  {% block content %}
  {% endblock %}
  <div>
    <h2>So much!</h2>
  </div>
</body>
</html>

用<div>圈起來的是不可變的父模板,可改動添加的部分在{% block content %}{% endblock %}之間。

子模版,用{% extends "父模板" %} 表示從父模板繼承了代碼。在{% block content %}{% endblock %}之間添加內(nèi)容。

{% extends "base.html" %}
{% block content %}
  <h3>more than anyone</h3>
{% endblock %}
{% extends "base.html" %}
{% block content %}
  <h3>more than anything</h3>
{% endblock %}

調(diào)用

# 模板繼承1
@app.route('/one')
def one_base():
  user = User(520, 'loli')
  return render_template("one_base.html", user=user)
# 模板繼承2
@app.route('/two')
def two_base():
  user = User(520, 'loli')
  return render_template("two_base.html", user=user)

Flask框架學(xué)習(xí)筆記之模板操作實(shí)例詳解

Flask框架學(xué)習(xí)筆記之模板操作實(shí)例詳解

可以看到子模版繼承了題頭和尾部,中間為子模版添加的內(nèi)容。

代碼

#-*- coding:utf-8 -*-
from flask import Flask, render_template# 導(dǎo)入render_template以使用模板
# 定義一個models導(dǎo)入一個有id和name的類
from models import User

app = Flask(__name__)
# 根網(wǎng)址
@app.route('/')
def index():
  # return render_template("index.html")
  # 可以給模板傳入文本content修飾
  content = "Hello World!"
  return render_template("index.html", content = content)
# 通過調(diào)用類的實(shí)例方法給模板傳遞參數(shù)修飾
@app.route('/user')
def user_index():
  user = User(520, "loli")
  return render_template("user_index.html", user=user)
# 在模板中使用if語句
@app.route('/query_user/<user_id>')
def query_user(user_id):
  user = None
  if int(user_id) == 520:
    user = User(520, 'loli')

  return render_template("user_id.html", user=user)
# 在模板中使用for循環(huán)語句
@app.route('/users')
def user_list():
  users = []
  for i in range(1, 11):
    user = User(i, "loli" + str(i))
    users.append(user)
  return render_template("user_list.html", users = users)
# 模板繼承1
@app.route('/one')
def one_base():
  user = User(520, 'loli')
  return render_template("one_base.html", user=user)
# 模板繼承2
@app.route('/two')
def two_base():
  user = User(520, 'loli')
  return render_template("two_base.html", user=user)

if __name__ == '__main__':
  app.run()

希望本文所述對大家基于flask框架的Python程序設(shè)計(jì)有所幫助。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI