Skip to main content
 首页 » 编程设计

python之记住 Django 模型表单上的表单字段值

2024年08月28日29telwanggs

我是 Django 的新手,一直在玩弄 ModelForms。到目前为止,我已经能够轻松地创建 ModelForms。然而,有一个问题似乎让我有点困扰:

当用户填写表单时,如果出现错误(比如 int 而不是 char 或缺少 blank=False 值), 表单吐出错误并且似乎忘记用户在表单验证失败时输入的值。我想知道是否有办法记住这些值,以便用户不必再次输入它们。

目前,我有类似以下内容:

class ContactForm(CreateView): 
 
    form_class = ContactForm 
    template_name = "superform.html" 
    success_url = '/ty/' 
 
    def form_valid(self, form): 
        # do something useful with validated form 
        return super(ContactForm, self).form_valid(form) 
 
    def form_invalid(self, form): 
        # do something useful with invalidated form. 
        return super(ContactForm,self).form_invalid(form) 

我假设我需要在 form_invalid 中做一些事情来将值传回表单 - 但我不确定该怎么做(?)。

如果有人能指出正确的方向,我将不胜感激。

谢谢。

----编辑---

            <form class="form" role="form" action="{% url 'coolurl' %}" method="post">{% csrf_token %} 
 
                    {% if form.non_field_errors %} 
                      <div class="alert"> 
                      {% for error in form.non_field_errors %} 
                      <span class="label">Error: {{ error|escape }}</span>  
                      {% endfor %} 
                      </div> 
                    {% endif %} 
 
 
                    <div class="form-group"> 
                        {% if form.name.errors %} 
                          <div class="alert"> 
                          {% for error in form.name.errors %} 
                          <span class="label">Error: {{ error|escape }}</span>  
                          {% endfor %} 
                          </div> 
                        {% endif %} 
 
                        <label class="col-sm-3" for="id_name">Name:</label> 
                        <div class="col-sm-6"> 
                        <input class="form-control"  
                             id="id_name"  
                             type="text"  
                             name="name"  
                             maxlength="128"  
                             placeholder="Your name.."> 
                        </div> 
                    </div> 
 
                    <button type="submit" class="btn btn-success">Submit</button> 
            </form> 

请您参考如下方法:

尝试提及input标签的值:

<input class="form-control"  
                             id="id_name"  
                             type="text"  
                             name="name"  
                             maxlength="128" 
                             value="{{ form.name.value|default_if_none:'' }}" 
                             placeholder="Your name.."> 
                        </div>