DRFでurlのpkで型を指定しないとき、末尾にあるとint、urlの途中にあるとstringになる【メモ書き】
自分のメモ書き用です。
DjangoのDRFでpkを入れて型を指定しないときに、pkが末尾にあるとint、urlの途中にあるとstringになります。
Djangoのバージョンは2.2.24です。
DRFでurlのpkで型を指定しないとき、末尾にあるとint、urlの途中にあるとstringになる【メモ書き】
例として、次のようなpathがあるとします。
1 |
path('test/<pk>/', TestViewSet.as_view({'get': 'get', 'post': 'post'})) |
普通だったら、
1 |
path('test/<int:pk>/', TestViewSet.as_view({'get': 'get', 'post': 'post'})) |
のようにキャストすべきですが、例ではpkにキャストがついていません。
このようにurlの末尾にpkがある場合は、pkは自動的にintになります。
しかし、次のように末尾ではなくurlの途中にpkがあるとします。
1 |
path('<pk>/test/', TestViewSet.as_view({'get': 'get', 'post': 'post'})) |
この場合はpkは自動的にstringになります。
次のように明示的にpkにintを指定してあげなければ、pkがintになりません。
1 |
path('<int:pk>/test/', TestViewSet.as_view({'get': 'get', 'post': 'post'})) |
終わりに
DjangoのDRFでpkを入れて型を指定しないときに、pkが末尾にあるとint、urlの途中にあるとstringになるというお話をさせていただきました。
ディスカッション
コメント一覧
まだ、コメントがありません