標題賊饒舌
# 今天的 issue
要給記帳本的五個圖表各一個 get 方法,選了最老套 JSON-RPC 的寫法,但又想用一個類集中管理這些 def,但實作上遇到了些問題
調整中的寫法
urls.py
path('canva/CurrentMonthPie', views.CanvaView.as_view(),name='current_month_pie'), |
views.py
class CanvaView(GenericAPIView): | |
def current_month_pie(self, request): | |
accounts = Account.objects.all() | |
data = {} | |
return ResponseTool.success_json_res(data) |
遇到的問題
Method "GET" not allowed.
相關文章:
- detail": "Method "GET" not allowed. | Django Rest Framework
- 讀下來調整了一下
urls.py的寫法,但還是噴一樣的錯誤;w;,但我注意到它這邊有個裝飾器欸- 【零基礎成為 AI 解夢大師秘笈】Day10 - Django VII:照著加了還是一樣的問題
- 繼續觀察第一篇文章的代碼,改成直接呼叫 def 呢?
- 調用學問大... 2 3
- 讀下來調整了一下
好唄... 讀了這麼多篇,總之不同寫法要注意它父類別或裝飾器傳參的細節,才不會出現類似
TypeError: View.as_view.<locals>.view () missing 1 required positional argument: 'request' #沒加裝飾器會變成缺 2,但如果不知道自己在幹嘛就會被誤導 ==
AssertionError: The
requestargument must be an instance ofdjango.http.HttpRequest, notmyapp.views.CanvaView.
TypeError: CanvaView.current_month_pie() takes 1 positional argument but 2 were given
改良後可以打通的寫法
urls.py
path('canva/CurrentMonthPie', views.CanvaView().current_month_pie), # CanvaView () 表這個物件本身,這樣才能正確調用到 def,不然它會說它找不到 沒有這個成員 |
views.py
class CanvaView(GenericAPIView): | |
#後來又把裝飾器拔掉惹ˊ_>ˋ | |
def current_month_pie(self, request): | |
accounts = Account.objects.all() | |
data = {} | |
return ResponseTool.success_json_res(data) |
哇,總覺得這裡有個坑... 是該好好研究一下..
得從 DRF 的基礎了解
- Django REST Framework 学习笔记
- 姆姆姆... 好像用 ViewSet 寫更漂亮.. 而且它本來就是讓人指定傳參的
- 沒有類的世界,直接調用 def,上方 stackoverflow 也有人提出這種解答
- Django Rest FrameWork 基礎筆記
唉,沒頭沒腦 錯中學
