在不使用表单或模型的情况下验证django中的单个字段

时间:2018-02-17 08:23:15

标签: python django validation

我使用django来填充某些表单,我知道如何使用表单并使用验证,但我的表单很复杂,很难从这些表单创建Forms对象。我想知道有没有办法在视图中从POST获得的参数上使用验证器?

例如,我有一个名为user然后

的字段
def login_view(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        user=request.POST["user"]
        # check whether it's valid without using forms

我了解验证工具https://docs.djangoproject.com/en/dev/ref/validators/,似乎它们仅适用于modelsforms。甚至可以验证单个字段吗?如果不是我对复杂表格有什么其他选择?

1 个答案:

答案 0 :(得分:2)

Validator只是一个接收表单值的函数,如果该值有效则不执行任何操作,或者如果它无效则引发ValidationError。

您只需将验证器导入视图并在那里调用即可。

使用名为custom_validate_user的验证程序,可能看起来像这样:

def login_view(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        user=request.POST["user"]
        try:
            custom_validate_user(user)
        except ValidationError as e:
            # handle the validation error

尽管如此 - 如果您有复杂的表单,如果您直接处理完整的验证,您的视图可能会变得混乱。因此,您通常将此逻辑封装在表单中,或确保在模型级别进行验证。