Django:验证GET请求

时间:2018-12-01 12:20:52

标签: django python-3.x

我已经写了一些简单的API端点(没有Django REST)。我在弄清楚如何验证输入数据时遇到问题。

class CarTypeForm(forms.Form):
    car_type= forms.IntegerField(
        validators=[MinValueValidator(0), MaxValueValidator(6)], required=False
    )

def car_data_as_json(request):
    """
    API Endpoint
    """

    # Receive and validate variables from get request
    car_type= request.GET.get("car_type", 0)
    car_type_form = CarTypeForm()
    car_type_form.car_type = int(car_type)
    if car_type_form.is_valid():
        do something
        return JsonResponse(something)
    else:
        return JsonResponse({'err': 'invalid car_type'}, status=400)

我不明白为什么if car_type_form.is_valid():不是True,尽管该值例如为5。

由javascript调用端点到URL:/api/car_data/?car_type=<number>

我正在使用Django 2.1

1 个答案:

答案 0 :(得分:1)

在调用is_valid之前,您需要使用数据初始化表单:

car_type_form = CarTypeForm({'car_type': car_type})