【问题标题】:get() missing 1 required positional argument: 'to_date'get() 缺少 1 个必需的位置参数:'to_date'
【发布时间】:2021-12-21 22:46:21
【问题描述】:

我正在尝试过滤在特定日期之间创建的用户,我正在使用过滤器方法。但是我在传递参数时遇到问题,我怎样才能以正确的方式传递参数,这是我迄今为止尝试过的。

views.py

class RegisteredUserFilter(APIView):
    serializer = RegisteredUserFilterSerializer
    
    def get(self, from_date, to_date):
        userondate = User.objects.filter(created_at__range=[from_date, to_date]).values()
        users = []
        for user in userondate:
            users.append(user['username'])
        return Response({"User": users})

serialzers.py

class RegisteredUserFilterSerializer(serializers.Serializer):
from_date = serializers.DateField()
to_date = serializers.DateField()
model = User

完整代码:https://github.com/abinashkarki/rest_framework_authentication/tree/master/authapp

在这样做的时候我得到了:

TypeError: get() missing 1 required positional argument: 'to_date'

参数应该如何传递?

【问题讨论】:

    标签: python-3.x django django-rest-framework


    【解决方案1】:

    如果你想从get 获取参数,你必须把它写在你的urlpattern 中。 所以,你必须写类似的东西

    path('userRegisteredOnDate/<from_date>/<to_date>/', RegisteredUserFilter.as_view()),
    

    喜欢你的 密码重置 urlpattern。 然后你应该解析它,因为方法将采用字符串类型,而不是日期类型。

    【讨论】:

    • 如果您不想从 url 关键字中获取 args,而是从 ?username=max 等 url 参数中获取参数,您的代码将类似于 from_date = self.request.GET['from_date']
    • 我尝试了 from_date = self.request.GET['from_date'] ,但仍然收到相同的错误消息
    • @AbinashKarki 您需要从 get 方法中删除 from_dateto_date 参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2019-10-10
    • 2017-03-27
    相关资源
    最近更新 更多