NO IMAGE

Flask的路由和檢視函式

在Flask定義路由的最簡便方式,是使用程式例項提供的app。route修飾器,把修飾的函式註冊為路由

如:

@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello World'

像index這樣的函式為檢視函式

不僅如此!你可以構造含有動態部分的
URL,也可以在一個函式上附著多個規則。

變數規則

要給
URL 新增變數部分,你可以把這些特殊的欄位標記為 <variable_name> , 這個部分將會作為命名引數傳遞到你的函式。規則可以用 <converter:variable_name> 指定一個可選的轉換器。這裡有一些不錯的例子:

@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % username
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
```
## 程式請求上下文
### Flask從客戶端收到請求,需讓檢視函式能訪問一些物件,才能處理請求。為了避免大量可有可無的引數把檢視函式弄的一團糟,Flask使用上下文把某些物件變為全域性可訪問。
### 如:
```Python
from Flask import request
@app.route('/')
def index():
user=request.headers.get('User-Agent')
return 'your browser is %s' % user

HTTP 方法

HTTP
(與 Web 應用會話的協議)有許多不同的訪問 URL 方法。預設情況下,路由只回應 GET 請求,但是通過 route() 裝飾器傳遞 methods 引數可以改變這個行為。這裡有一些例子:

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
do_the_login()
else:
show_the_login_form()

模板渲染


Python 生成 HTML 十分無趣,而且相當繁瑣,因為你必須手動對 HTML 做轉義來保證應用的安全。為此,Flask 配備了 Jinja2 模板引擎。

你可以使用
render_template() 方法來渲染模板。你需要做的一切就是將模板名和你想作為關鍵字的引數傳入模板的變數。這裡有一個展示如何渲染模板的簡例:

from flask import render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)