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則是可以去變化模板的內容。