数据验证失败时,当用户被重定向回表单时,如何保持表单(Python、Django)?
我知道这可能是一个重复的问题,但前一个问题是一个较老的问题,这些问题使用了一个表单实例,这对我没有什么帮助 验证失败后如何保存表单数据?我有多个下拉列表和输入字段,我不喜欢看到我的用户在后端验证失败时重新执行和键入所有操作。假设我有一个非常简单的表格: HTML:数据验证失败时,当用户被重定向回表单时,如何保持表单(Python、Django)?,django,forms,python-2.7,Django,Forms,Python 2.7,我知道这可能是一个重复的问题,但前一个问题是一个较老的问题,这些问题使用了一个表单实例,这对我没有什么帮助 验证失败后如何保存表单数据?我有多个下拉列表和输入字段,我不喜欢看到我的用户在后端验证失败时重新执行和键入所有操作。假设我有一个非常简单的表格: HTML: 我遇到的大多数例子都是使用form实例,它使用form.save()等。我选择了这个。如果用户提交的数据验证失败,是否有方法自动填充我的表单?谢谢 Django表单类是一个不错的选择。表单验证和呈现是构建它们的任务。我强烈建议使用它们
我遇到的大多数例子都是使用form实例,它使用form.save()等。我选择了这个。如果用户提交的数据验证失败,是否有方法自动填充我的表单?谢谢 Django表单类是一个不错的选择。表单验证和呈现是构建它们的任务。我强烈建议使用它们,因为在将用户输入传回浏览器时,它们也会考虑安全方面的问题(所有来自用户领域的输入都是有害的!) 如果确实需要在没有表单类的情况下实现这一点,则需要手动将表单值添加到呈现上下文中—这允许您在模板中使用它们 您的方法的主要问题是,如果出现验证错误,您希望重定向。重定向是对浏览器的响应,它告诉您:我没有东西给您,请转到这个位置。通常,浏览器不会将第一个请求中发送的数据也发布到第二个请求(这通常是一种良好的行为)。你可以通过回答状态码307而不是302来解决这个问题。有关更多信息,请阅读例如。或者,您可以使用get参数将表单数据编码到目标位置
再次强调:您应该有很好的理由不只是使用一个视图的django方法,该视图作用于GET和POST,并使用表单实例正确处理表单。django表单类是一种方法。表单验证和呈现是构建它们的任务。我强烈建议使用它们,因为在将用户输入传回浏览器时,它们也会考虑安全方面的问题(所有来自用户领域的输入都是有害的!) 如果确实需要在没有表单类的情况下实现这一点,则需要手动将表单值添加到呈现上下文中—这允许您在模板中使用它们 您的方法的主要问题是,如果出现验证错误,您希望重定向。重定向是对浏览器的响应,它告诉您:我没有东西给您,请转到这个位置。通常,浏览器不会将第一个请求中发送的数据也发布到第二个请求(这通常是一种良好的行为)。你可以通过回答状态码307而不是302来解决这个问题。有关更多信息,请阅读例如。或者,您可以使用get参数将表单数据编码到目标位置 同样:您应该有很好的理由不只是使用一个视图的django方法,该视图作用于GET和POST,并使用表单实例正确处理表单
<form class="" action="/register" method="post">
<label for="">First Name</label>
<input type="text" name="" value="">
<label for="">Last Name</label>
<input type="text" name="" value="">
<label for="">Password</label>
<input type="password" name="" value="">
</form>
def register(self):
.....
if errors:
for err in errors
messages.errors(request, err)
return redirect('/')
else:
messages.success(request, "Welcome User!")
return redirect('/dashboard')