簡體   English   中英

記住Django模型表單上的表單字段值

[英]remembering form field value on django model form

我對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>

您已經負責通過簡單地在HTML中對其進行硬編碼來將這些字段從Django渲染出來。 這意味着Django無法插入當前值。 不僅在出錯后重新顯示時,而且在修改現有數據庫內容的表單時也是如此。

不要那樣做。 我了解您不希望只使用form.as_p ,但有一個很好的中間立場:使用{{ form.my_field }}輸出模板中的每個字段。 您可以在forms.py的定義中的字段中添加相關的類,然后Django將負責正確輸出它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM