首页 > 解决方案 > 如何做到这一点,如果表单中有错误,我在字段中键入的所有数据都会保留,并且只会弹出错误

问题描述

如何做到这一点,如果表单中有错误,我在字段中键入的所有数据都会保留下来,并且错误显示让我编辑我需要编辑的内容。

因为如果人们按下提交是非常不友好的,并且他们之前输入的所有内容都必须重新输入,因为错误导致他们需要再次提交表单。

就像我们发布 stackoverflow 问题一样,如果我们的问题中有错误,例如时间限制,我们之前输入的任何内容都会保留

如果您需要更多代码,请告诉我。

html

   <form class="create-form" method="post" enctype="multipart/form-data">{% csrf_token %}
   <div class="form-group">
    <label for="id_title">Title</label>
    <input class="form-control" type="text" name="title" id="id_title" placeholder="Title" required autofocus>
   </div>
   <button class="submit-button btn btn-lg btn-primary btn-block" type="submit">Submit</button>

  </form>

  {% if form.errors %}
  {% for field in form %}
      {% for error in field.errors %}
          <div class="alert alert-danger">
              <strong>{{ error|escape }}</strong>
          </div>
      {% endfor %}
{% endif %}
    

视图.py

def create_blog_view(request):
    context = {}
    user = request.user
    if request.method == 'POST':
        form = CreateBlogPostForm(request.POST or None, request.FILES or None)    
        if form.is_valid():
            obj.save()
            return redirect('HomeFeed:main')
        else:
            context['form'] = form
    return render(request, "HomeFeed/create_blog.html", context)

标签: pythondjangodjango-viewsdjango-formsdjango-templates

解决方案


您正在通过编写标签手动呈现字段。当您使用表单实例进行渲染时,Django 会自动将 value 属性设置为以前的值。您可以使用{{ form.as_table }}, {{ form.as_p }}, {{ form.as_ul }}. 您还可以使用字段名称来单独呈现{{ form.title }}字段title


推荐阅读