首页 > 解决方案 > 在 Django 中验证 POST 参数中的 url

问题描述

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

这是我的意见.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 路径。如何从函数中获得正确的返回?

标签: pythondjango

解决方案


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

validator = URLValidator()
validator(value)

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


推荐阅读