带有 GET 参数的基于 Django 类的 View

标签 django django-rest-framework django-class-based-views

使用 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_idkwargsget_object .

def get_object(self):
    user_id = self.kwargs['user_id']
    ...

基于类的 View 提供了更大的灵活性和代码重用,但您确实需要了解每个方法的含义以及调用时间。浏览 Django rest 框架的文档。

关于带有 GET 参数的基于 Django 类的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418422/

相关文章:

python - manage.py 标志强制执行无人值守命令?

django - 如何在 django 模板中重复 "block"

django - DRF 错误消息的格式

django - 如何在基于 Django 类的 View 上使用 permission_required 装饰器

python - Django DateField 中 Xlswriter 的输出不正确

html - 图像不显示。 Django

django - 在 Django 中将模型字段设置为必需

javascript - 调整 Django Rest 框架模板

python - 为什么保存到数据库后 CreateView 中的 self.object 没有 id?

jquery - 将 django-dynamic-formset 与来自 d​​jango-extra-views 的 CreateWithInlinesView 一起使用 - 多个表单集