(十三) Django - render, redirect

render( )

render是指渲染模板(template)的意思,一開始還真覺得抽象,渲染不是畫畫才會用到的名詞XD,還是直接看例子比較快:

1
from django.shortcuts import renderimport datetimedef homepage(request):    now = datetime.datetime.now() # 現在時間    context = {'now':now}    return render(request, 'homepage.html', context)

render的必要參數有:
✦ request
✦ template_name:要使用的網頁模版。

另外這個範例還加了一個非必要參數:
✦ context:必須是dictionary。

這邊看一下homepage.html,兩個大括號是固定用法,中間就放context的key:

1
<html>...省略        <h3>{{ now }}</h3>

redirect( )

redirect裡面放url參數,目的是要跳轉到這個網址去,舉例來說:

1
def my_view(request):    ...    return redirect('/quiz/')

執行my_view,瀏覽器就會跳轉到 “http://127.0.0.1:8000/quiz"。

小結:兩者最明顯的差異在於redirect並不對樣板做任何影響,只是導引到另一個頁面,而render則是可以去變化模板的內容。