使用表单错误呈现当前页面

时间:2014-01-21 02:39:25

标签: 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':
        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.

有没有人有想法?

1 个答案:

答案 0 :(得分:0)

由于表单已发布到"/messages/create/",因此将呈现包含此网址的页面。而你自己提到,如果我们进行重定向,我们将丢失表单数据。我假设发布表单的页面的网址是/index

您可以执行以下操作:

  1. 在显示表单错误时,请将网址保留在/messages/create/,但只需使用表单数据和错误呈现/index页面的html。

  2. 始终显示网址/index,但是使用ajax将表单数据发布到/messages/create/,然后使用javascript显示错误或任何其他消息。

  3. /index页面,将表单发布到/index,并附加一个隐藏参数action = "message_create"。基于action的值,从索引方法调用合适的方法。这样,您将始终保持/index