【问题标题】:sending arguments to django rest framework mixin is not parsed as keyword向 django rest 框架 mixin 发送参数不被解析为关键字
【发布时间】:2018-09-07 01:33:28
【问题描述】:

我正在使用 Django 休息框架。我正在通过邮递员测试我的方法。

我有一个名为 ActionView 的视图,我正在使用 mixin:

class ActionView(
             mixins.CreateModelMixin,
             mixins.RetrieveModelMixin,
             generics.GenericAPIView):
queryset = Action.objects.all()
serializer_class = ActionSerializer


def post(self, request, *args, **kwargs):
    return self.create(request, *args, **kwargs)

def get(self, request,*args, **kwargs):
    return self.retrieve(request, *args, **kwargs)

网址是:

urlpatterns = [
path(r'action/', views.ActionView.as_view()),
path(r'alert/', views.AlertView.as_view()),

]

它们包含在主路由功能中。

我正在尝试发送一个获取请求,如下所示:

http://localhost:8000/actionsAndAlerts/action/?pk=1/ 像这样:http://localhost:8000/actionsAndAlerts/action/?1/

但是我发送的 pk 没有在 get 方法中呈现为关键字 - 所以我不断收到此错误:AssertionError: Expected view ActionView to be called with a URL keyword argument named “pk”。修正您的 URL 配置,或正确设置视图上的 .lookup_field 属性。

我尝试在 get 方法上方添加:@detail_route(url_path='action/(?P[0-9]+)') 但没有成功。

知道如何解决这个问题吗?

非常感谢。

【问题讨论】:

    标签: django django-rest-framework postman


    【解决方案1】:

    url arg 之前不需要?,只需使用http://localhost:8000/actionsAndAlerts/action/1/。但是您需要添加到 urlpattern pk 参数(请参阅详细信息 here)以使视图可以选择要显示的正确对象,将模式更改为:

    path('action/<int:pk>', views.ActionView.as_view()),
    

    【讨论】:

    • 我收到一个页面未找到错误,但我会尝试继续这样做
    猜你喜欢
    • 1970-01-01
    • 2018-02-11
    • 2017-03-19
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2013-01-17
    • 2021-12-09
    相关资源
    最近更新 更多