【问题标题】:Django form validation requires external resourceDjango 表单验证需要外部资源
【发布时间】:2014-09-26 15:08:23
【问题描述】:

我有一个用户输入密码的 Django 表单。我无法在本地验证密码;我调用外部 API 来设置密码,如果出现问题,它会返回错误消息(即密码太短、包含字典单词等)

API 还需要用户的登录名,它不是该表单上的元素,但在视图中是已知的。

那么在哪里进行表单验证的最佳位置?在表单的 clean() 方法中,还是在视图代码中?

如果我使用 clean() 方法,我如何传入用户的登录名?

谢谢。

【问题讨论】:

    标签: django forms validation


    【解决方案1】:

    此验证与表单有关,我认为您应该将此验证放在表单中。 您可以将用户名添加到表单数据并将其传递给表单。 例如,如果用户名错误,您可以提出ValidationError。 而其他消息password short等似乎是验证错误,所以应该在表单中。

    例如,您将request.POST 传递给表单。 你可以这样做:

    data = request.POST.dict()
    data['username'] = 'myusername'
    form = Form(data)
    

    如果您总是需要,将用户名作为字段添加到表单有什么问题?

    【讨论】:

    • 用户名是在之前的表格中输入的;如果用户必须再次输入,这将是混乱和可能的模棱两可。
    • 当然可以,但没有必要向用户显示该字段:) Django 表单不仅是用户可以看到的,它还是数据验证的强大工具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多