2015-10-15 52 views
0

我已经搜索了一些关于这个问题的帖子,但是仍然没有找到解决办法。点击“提交”后,页面可以重定向到另一页面。但是sql数据库不显示提交的信息。提交的表格不保存在sql中 - dJango

在此先感谢您的建议。

views.py

@csrf_exempt 
def input(request): 
    if request.method == 'POST': 
     form = InputForm(request.POST or None, request.FILES or None) 
     if form.is_valid(): 
      company = form.cleaned_data['company'] 
      region = form.cleaned_data['region'] 
      uom= form.cleaned_data['uom'] 
      start_date= form.cleaned_data['start_date'] 
      end_date= form.cleaned_data['end_date'] 
      add_input=Input.objects.create(company=company,region=region,uom=uom,start_date=start_date,end_date=end_date) 
      add_input.save() 
      return redirect('resut') 
     else: 
      print(form.errors) 
    else: 
     form = InputForm(initial={'company':'coco','uom':'M$'},instance=Input) 
     return render_to_response('inputform.html',{'form': form}) 

models.py

class Input(models.Model): 
    company=models.CharField(max_length=100) 
    region=models.CharField(max_length=100) 
    uom=models.CharField(max_length=100) 
    start_date=models.DateField(auto_now=False, auto_now_add=False) 
    end_date=models.DateField(auto_now=False, auto_now_add=False) 

forms.py

class InputForm(forms.ModelForm): 
    company=forms.CharField(widget=forms.TextInput, label="Company",error_messages={'required': 'Please enter your name'},required=True) 
    regionlist = forms.ModelChoiceField(queryset=Dupont.objects.values('region').distinct()) 
    uom=forms.CharField(required=True) 
    start_date=forms.DateField(widget=DateInput(),required=True) 
    end_date = forms.DateField(widget=DateInput(),required=True) 
    error_css_class='error' 
    required_css_class = 'required' 

    class Meta: 
     model = Input 
     fields = ('company', 'region','uom','start_date','end_date') 
     widgets = { 
      'start_date': forms.DateInput(attrs={'class':'datepicker'}), 
      'end_date': forms.DateInput(attrs={'class':'datepicker'}), 
     } 

个HTML片段

<form action="{% url 'result' %}" method="post">{% csrf_token %} 

     <!--company--> 
     <div class="field"> 
      <p>Company:<input type="text" name="company" value="{{company}}"/> 
     </div> 


     <!--region--> 
     <div class="field" > 
      <label> Select the Region: 
      {{ form.regionlist }} 
       {% for region in form.regionlist.choices %} 
        <option value="{{ val }}" {% ifequal data.val val %}selected {% endifequal %}></option> 
       {% endfor %} 
      </label> 
     </div> 

     <!--uome--> 
     <div class="field"> 
      <p>Unit of Measure:<input type="text" name="uom" value="{{uom}}"/> 
     </div> 

     <!--start date--> 
     <label for="startDate">Start Month:</label> 
     <input name="start_date" id="startDate" class="date-picker"/> 

     <!--END date--> 
     <label for="endDate">End Month:</label> 
     <input name="end_date" id="endDate" class="date-picker" /> 


     <!--submit--> 
     <div class="fieldWrapper"> 
     <p><input type="submit" value="Submit" /></p></div> 

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

    </form> 
+1

“forms.py”中的缩进是错误的。 class Meta:'应该是类Inputform(forms.ModelForm):'的一部分。请遵循约定,并将您的表单命名为:'InputForm'而不是'Inputform'。 – cezar

+1

您的表单的操作指向'result'的url是否会将您带到'input'视图?此外,你有一个csrf标记,所以你为什么要把它作为'csrf_exempt'? – Sayse

+0

不,行动指向另一个视图,而不是输入视图。我不粘贴该视图,因为现在的问题是此表单的数据未成功保存。 –

回答

3

没有,动作一点到另一点看,而不是输入视图。我不粘贴该视图,因为现在的问题是此表单的数据未成功保存。

那么这就是你的问题,当你提交一个表单它会去指定的操作。如果我怀疑它的代码片段是inputform.html那么您只需要从表单中删除该操作即可。

<form method="post"> 
+0

目的是当用户提交“输入”表单时,页面将直接指向另一页并显示用户提交的一些信息。对不起,我删除了html中的操作,但它仍然不保存在数据库中。 –

+1

@miaomiao - 是的,欢迎光临,但是从您的角度来看,您仍然需要先处理表单。表单是否有效?如果您的IDE允许,尝试设置断点 – Sayse

+0

@miaomiao - 您可以在收到数据后随意使用数据。你的表格唯一的目的是收集信息,你以后用它做什么取决于你 – Sayse