在Django中验证POST参数中的网址

时间:2018-09-17 12:07:08

标签: python django

我正在尝试验证发送的POST请求中的参数是有效的URL。

这是我的views.py

views.py
def post(self, request):
    if url_validator(request) == 400:
        return Jsonresponse(status=400) 

这是我的utils.py。该文件将包含所有常规方法和类。

def url_validator(request, ext):
        for key, value in request.data.items():
        value = request.data[key]
        try:
            URLValidator(value)
        except ValidationError:
            return 400

当我从视图中调用函数url_validator时,它会执行,但是当两个请求参数都不包含URL时不会返回异常。 例如,如果我传递参数param1: "some string",则它不会通过ValidationError路径。 如何从函数中获取正确的回报?

1 个答案:

答案 0 :(得分:1)

验证器类在其实例化时不接受要验证的输入,而是在调用实例化对象时接受它:

validator = URLValidator()
validator(value)

但这实际上不是在Django中进行验证的方法。使用表单,或者如果您正在处理提交的JSON,请使用django-rest-framework序列化器。