Python 呈现包含表单错误的当前页面
请参阅下面的代码Python 呈现包含表单错误的当前页面,python,django,redirect,django-forms,Python,Django,Redirect,Django Forms,请参阅下面的代码 <!-- in index.html --> <form role="form" action="/messages/create/" method="post"> {% csrf_token %} <div class="form-group"> ... </form> def create(request): if request.method == 'POST': fo
<!-- in index.html -->
<form role="form" action="/messages/create/" method="post">
{% csrf_token %}
<div class="form-group">
...
</form>
def create(request):
if request.method == 'POST':
form = MessageForm(request.POST)
if form.is_valid():
...
else:
return render(request, 'app/index.html', {'form': form})
#this redirects to /messages/create/, but I want to look at /index, with the form errors.
{%csrf_令牌%}
...
def创建(请求):
如果request.method==“POST”:
form=MessageForm(request.POST)
如果form.is_有效():
...
其他:
返回呈现(请求'app/index.html',{'form':form})
#这将重定向到/messages/create/,但我想查看/index,其中包含表单错误。
有人有想法吗?由于表单正在发布到
“/messages/create/”
,因此将呈现一个包含此url的页面。你自己也提到过,如果我们重定向,我们会丢失表单数据。我假设发布表单的页面的url是/index
您可以执行以下操作:
/messages/create/
,但只需将表单数据和错误呈现在/index
页面的html中即可/index
,但使用ajax将表单数据发布到/messages/create/
,然后使用javascript显示错误或任何其他消息/index
页面,使用附加的隐藏参数action=“message\u create”
将表单发布到/index
。根据操作的值
,从索引方法调用合适的方法。这样,您将始终保持在/index
请发布您的完整代码,以及您收到的确切错误,模板的
…
中有什么内容?无错误。当表单无效时,用户被重定向到/messages/create/
,因为它是在表单操作中指定的,但我想将其重定向到/index
。我可以只重定向('/')
,但是我会丢失表单。错误
,用户看不到表单无效的原因(例如密码不存在等)。@MaximusS,您的代码不会执行重定向,除非您的前端HTML/JS正在执行重定向。当表单无效时,它将在url/messages/create/
处呈现index.HTML
模板。