【问题标题】:Expected view to be called with a URL keyword argument named "user_token"使用名为“user_token”的 URL 关键字参数调用预期视图
【发布时间】:2018-08-17 04:47:51
【问题描述】:

我正在使用 Django Rest Framework,这是我的观点:

class DeleteUserView(generics.DestroyAPIView):
    permission_classes = (IsAuthenticated,)
    serializer_class = UserSerializer
    queryset = User.objects.all()
    lookup_field = 'user_token'

还有我的 urls.py:

from django.urls import path
from .views import CreateUserView, DeleteUserView

urlpatterns = [
    path('add_user/', CreateUserView.as_view()),
    path('delete_user/', DeleteUserView.as_view()),
]

serializer.py

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('user_token',)

我正在尝试通过特定令牌删除用户,但它不起作用...我正在使用 Postman 并在正文中提供 user_token

【问题讨论】:

  • 您遇到什么错误?您可以在这里发布您在 Postman 中使用的请求 URL 吗?
  • @AswinMurugesh 预期视图 DeleteUserView 将使用名为“user_token”的 URL 关键字参数调用。修正您的 URL 配置,或正确设置视图上的 .lookup_field 属性。
  • @AswinMurugesh 这里是请求网址:http://127.0.0.1:8000/delete_user/

标签: django django-rest-framework


【解决方案1】:

如果您设置lookup_field 参数,它基本上会在您的 URLconfig 中查找该变量。例如。

path('delete_user/(?P<user_token>[-\w]+)/', DeleteUserView.as_view()),

如果你像上面一样指定 URL,然后调用http://127.0.0.1:8000/delete_user/1/,它应该可以工作

注意

在您的情况下,如果您要拥有像 add_userdelete_userupdate_user 这样的 CRUD 视图,那么我建议您使用 model viewset

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2021-08-24
    • 1970-01-01
    • 2018-06-30
    • 2014-09-13
    相关资源
    最近更新 更多