我正在使用django来填充一些表单,我知道如何使用表单和验证,但我的表单很复杂,很难从这些表单创建表单对象。我想知道有没有办法在视图中对我从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/,但看起来它们只适用于models
和forms
。有没有可能验证单个字段?如果没有,我有什么其他选项来验证复杂的表单?
2条答案
按热度按时间taor4pac1#
Validator只是一个接收表单值的函数,如果值有效,则不执行任何操作,如果值无效,则引发ValidationError。
您可以将Validator导入到视图中并在那里调用它。
使用名为
custom_validate_user
的验证器时,可能如下所示:尽管如此,如果你有复杂的表单,你的视图可能会变得混乱,如果你直接在适当的地方处理整个验证,因此你通常把这个逻辑封装在一个表单中,或者确保在模型级别上进行验证。
hxzsmxv22#
如果您有一个
User
模型,您可以在其中定义验证器,并在需要时重用它。调用一个字段的验证器的函数(类似于
model.clean_fields()
,但在一个字段上运行):使用它: