我使用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/,似乎它们仅适用于models
和forms
。甚至可以验证单个字段吗?如果不是我对复杂表格有什么其他选择?
答案 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
尽管如此 - 如果您有复杂的表单,如果您直接处理完整的验证,您的视图可能会变得混乱。因此,您通常将此逻辑封装在表单中,或确保在模型级别进行验证。