请参阅下面的代码。
<!-- 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.
有没有人有想法?
答案 0 :(得分:0)
由于表单已发布到"/messages/create/"
,因此将呈现包含此网址的页面。而你自己提到,如果我们进行重定向,我们将丢失表单数据。我假设发布表单的页面的网址是/index
。
您可以执行以下操作:
在显示表单错误时,请将网址保留在/messages/create/
,但只需使用表单数据和错误呈现/index
页面的html。
始终显示网址/index
,但是使用ajax将表单数据发布到/messages/create/
,然后使用javascript显示错误或任何其他消息。
从/index
页面,将表单发布到/index
,并附加一个隐藏参数action = "message_create"
。基于action
的值,从索引方法调用合适的方法。这样,您将始终保持/index
。