(十六)Django - redirect的錯誤示範

發完昨天的文後發現好像對redirect有點誤會…所以又做了更改。

https://ithelp.ithome.com.tw/upload/images/20200917/201297255MbnnqcIrY.png

我原本從上圖官方文件得到的理解是把viewname放進redirect的第一個參數,這樣之後就會轉向result.html。

1
redirect('result', total=sum(total))

所以這邊的’result’我放的是viewfunction result,但runserver完有報錯:

1
Reverse for 'result' not found. 'result' is not a valid view function or pattern name.

Django說他找不到view result!?但說明提到pattern name,所以我就把quiz/urls.py加上name:

1
path('result/<int:total>', views.result, name='result'),

這樣是成功的。
後來再仔細看官方文件,粗略的意思是說redirect後台是由reverse所處理,而在reverse裡面除了放viewname也以放URL pattern name。

那原本說好的viewname?
直到估狗了無數篇文章,才驚見viewname不應該有引號包覆,但再回頭看第一張圖,官方文件明明寫**’some-view-name’**,有引號啊~~看來是我誤會了…不過也知道了還可以放URL pattern name,搞了半天 哈