使用 django rest 框架,我正在尝试创建一个允许检索和更新单个用户的 View ,但我不明白该怎么做。目前我不关心权限和身份验证。
View .py
class UserDetailsView(RetrieveUpdateAPIView):
def get_object(self, user_id):
user = get_user_model().objects.get(pk=user_id)
return user
网址.py
urlpatterns = [
#rest of code
url(r'^user/(?P<user_id>[0-9]+)/$', views.UserDetailsView.as_view(), name="profile"),
]
如果我尝试访问 localhost:8000/user/1 我得到:
TypeError at /user/1/
get_object() missing 1 required positional argument: 'user_id'
Request Method: GET
Request URL: http://localhost:8000/user/1/
Django Version: 1.11.1
Exception Type: TypeError
Exception Value:
get_object() missing 1 required positional argument: 'user_id'
我错过了一些东西,因为使用基于函数的 View 一切正常。例如:
View .py
def game(request, id_game):
# rest of code
网址.py
url(r'^games/(?P<id_game>[0-9]+)/$', views.game, name="game"),
最佳答案
您可以访问 user_id
如 kwargs
在 get_object
.
def get_object(self):
user_id = self.kwargs['user_id']
...
基于类的 View 提供了更大的灵活性和代码重用,但您确实需要了解每个方法的含义以及调用时间。浏览 Django rest 框架的文档。
关于带有 GET 参数的基于 Django 类的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418422/