2016-10-27 73 views
0

後,我有一個簡單的形式Django的模板:Django的形式是空白提交

<div class="container"> 
    <form action="{% url 'reporter:new_report' %}" method="post" novalidate>{% csrf_token %} 
     {{ report_form.as_p }} 
     <button type="submit" value="submit" class="btn btn-primary">Generuj raport</button> 
    </form> 
</div> 

但是當我要提交其發送空白字段我的形式和我不知道爲什麼。

這是我的views.py:

def report_create(request, template_name='reporter/created.html'): 
    report = Report() 
    if request.POST: 
     report_form = ReportForm(request.POST or None, prefix="report_form") 

     if report_form.is_valid(): 

      report = report_form.save(commit=False) 
      report.report_name = report_form.cleaned_data['report_name'] 
      report.save() 

      return render(request, template_name, {}) 

    return redirect('reporter:empty_form') 

forms.py:

class ReportForm(forms.ModelForm): 
    class Meta: 
     model = Report 
     fields = ['report_name', 'create_date', 'additional_findings', 
        'additional_recommendations', 'report_type'] 

和models.py:

class Report(models.Model): 
    report_name = models.CharField(max_length=100, blank=True) 
    create_date = models.DateField('date of creation', blank=True) 
    additional_findings = models.TextField(max_length=10000, blank=True) 
    additional_recommendations = models.TextField(max_length=10000, blank=True) 

    FULL_REPORT = 'FULL REPORT' 
    NOT_FULL_REPORT = 'NOT FULL REPORT' 

    REPORT_TYPE = (
     (FULL_REPORT, 'Full report'), 
     (NOT_FULL_REPORT, 'Not full report') 
    ) 
    report_type = models.CharField(max_length=100, choices=REPORT_TYPE, default=FULL_REPORT, blank=True) 

我學習Django的,我做的一切都像在教程,但我不明白爲什麼當我想提交它時,這個表單仍然是空白的。

編輯: 我改變了report_create函數,但結果我仍然是相同的 - 表單中的數據是空白的。

回答

1

我終於解決了問題訪問值。 我將name="{{ field.name }}"添加到html文件的輸入字段。然後用cleaned_data打印所有值。它工作正常。

編輯: 我在形式改變{{ report_form.as_p }}到環路超過字段和加入name標籤輸入。

+0

我以爲你用Django窗體構建html輸入但不是啊? –

+1

一開始,是的。然後,我將django'{{report_form.as_p}}'更改爲在此窗體中循環顯示字段,並將'name'標記添加到輸入中。 – allocer

1

如果你的所有字段是有效的,那麼你可以使用report_form.cleaned_data

+0

我不明白。我收到了一個錯誤:AttributeError:'ReportForm'對象沒有'cleaned_data'屬性。你能解釋一下,我該怎麼做? – allocer

+0

哦,夥計!對不起,我以前沒有提到過......你應該在'is_valid'後面得到'cleaned_data'只有 –

+0

但我認爲這不是一個解決方案。來自表單的數據不會包含在視圖中。 'clean_data'如何幫助那裏? – allocer