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

您可以执行以下操作:

  • 在显示表单错误时,让url保持在
    /messages/create/
    ,但只需将表单数据和错误呈现在
    /index
    页面的html中即可

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

  • /index
    页面,使用附加的隐藏参数
    action=“message\u create”
    将表单发布到
    /index
    。根据
    操作的值
    ,从索引方法调用合适的方法。这样,您将始终保持在
    /index


  • 请发布您的完整代码,以及您收到的确切错误,模板的
    中有什么内容?无错误。当表单无效时,用户被重定向到
    /messages/create/
    ,因为它是在
    表单操作中指定的,但我想将其重定向到
    /index
    。我可以只
    重定向('/')
    ,但是我会丢失
    表单。错误
    ,用户看不到表单无效的原因(例如密码不存在等)。@MaximusS,您的代码不会执行重定向,除非您的前端HTML/JS正在执行重定向。当表单无效时,它将在url
    /messages/create/
    处呈现
    index.HTML
    模板。