MVC流程
原本的請求響應
結構:
視圖:
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/books/")
def book_list():
return render_template('book_list.html')
if __name__ == '__main__':
app.run(debug=True)
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圖書列表</title>
</head>
<body>
<h1>圖書列表</h1>
<ul>
<li>標題: </li>
<li>定價: </li>
<li>作者: </li>
<li>出版社: </li>
</ul>
</body>
</html>
請求
MVC過程:
新建一個文件夾用於存放處理邏輯
寫一個簡單的初始化邏輯
class Book:
def __init__(self, title, price, auther, publisher):
self.title = title
self.price = price
self.auther = auther
self.publisher = publisher
def __str__(self):
return f'<Book {self.title}>'
視圖函數調用,並傳給html,第一個book為html里面的位置參數,第二個book為真實數據
from flask import Flask, render_template
from modles.book import Book
app = Flask(__name__)
@app.route("/books/")
def book_list():
book = Book('xx課程', 100, 'xx作者', 'xxx出版社', )
return render_template('book_list.html', book=book)
if __name__ == '__main__':
app.run(debug=True)
render_template()支持傳入參數
html渲染,janja2接收參數:{{ 位置參數 }}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圖書列表</title>
</head>
<body>
<h1>圖書列表</h1>
<ul>
<li>標題: {{ book.title }}</li>
<li>定價: {{ book.price }}</li>
<li>作者: {{ book.auther }}</li>
<li>出版社: {{ book.publisher }}</li>
</ul>
</body>
</html>
訪問
渲染列表
from flask import Flask, render_template
from modles.book import Book
app = Flask(__name__)
@app.route("/books/")
def book_list():
books = [
Book('1.1', '1.2', '1.3', '1.4'),
Book('2.1', '2.2', '2.3', '2.4'),
Book('3.1', '3.2', '3.3', '3.4'),
Book('4.1', '4.2', '4.3', '4.4')
]
return render_template('book_list.html', books=books)
if __name__ == '__main__':
app.run(debug=True)
html里面用for循環渲染
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>圖書列表</title>
</head>
<body>
<h1>圖書列表</h1>
<table border="1" cellpadding="5">
<tr>
<td>書名</td>
<td>定價</td>
<td>作者</td>
<td>出版社</td>
</tr>
{% for book in books %}
<tr>
<td>{{ book.title }}</td>
<td>{{ book.price }}</td>
<td>{{ book.auther }}</td>
<td>{{ book.publisher }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
訪問