2015-04-02 41 views
0

我正在做一個應用程序,出於某種奇怪的原因,我無法將表單的值存儲到數據庫中。 問題是數據不是通過POST發送的,因此我的視圖不會收集它們。這是什麼原因? 我(簡體)模板代碼:Django模板表單無法發佈

{% block content %} 
<form action = "{%url 'bodySettings' %}" method = "POST"> 
    {% csrf_token %} 
    {{ form }} 
    <input type = "submit" value = "Save"/> 
</form> 

{% endblock content %} 

我的Django的看法:

@login_required 
@csrf_protect 
def bodysettings(request): 

    properties_Form = BodyPropertiesForm() 


    if request.method == 'POST': 
     print ("test") 
     if properties_Form.is_valid(): 

      properties = properties_Form.save(commit = False) 
      properties.user = request.user 
      properties.save() 

      return HttpResponseRedirect('/home/') 

    args = {} 
    args.update(csrf(request)) 
    args['request'] = request 
    args['form'] = properties_Form 

    return render_to_response('stats_test.html',args) 

而且我forms.py:

from django import forms 
    from django.contrib.auth.models import User 
    from models import Body 

    class BodyPropertiesForm(forms.ModelForm): 
    MALE = 'M' 
    FEMALE = 'F' 
    GENDER_CHOICE = (
    (MALE, 'male'), 
    (FEMALE, 'female'), 
    ) 

gender  = forms.ChoiceField(choices = GENDER_CHOICE, required = True, 
    help_text = "Select your gender") 
height  = forms.IntegerField(required = True, help_text = "Enter your height") 
weight  = forms.IntegerField(required = True, help_text = "Enter your body weight") 
neck  = forms.IntegerField(required = True, help_text = "Enter your neck size") 
shoulders = forms.IntegerField(required = True, help_text = "Enter your width") 
chest  = forms.IntegerField(required = True, help_text = "Enter your chest size") 
arm   = forms.IntegerField(required = True, help_text = "Enter your arm size") 
wrist  = forms.IntegerField(required = True, help_text = "Enter your wrist size") 
hips  = forms.IntegerField(required = True, help_text = "Enter your waist size ") 
waist  = forms.IntegerField(required = True, help_text = "Enter your hips size") 
thigh  = forms.IntegerField(required = True, help_text = "Enter your thigh size") 
calf  = forms.IntegerField(required = True, help_text = "Enter your calf size") 

class Meta: 
    model = Body 
    fields = ('gender','height','weight','neck','shoulders','chest','arm','wrist', 
     'waist','hips','thigh','calf') 
    exclude = ('user',) 
+0

粘貼你的'forms.py'在這裏,我認爲沒有爲'input'字段定義的名稱。 – itzMEonTV 2015-04-02 16:19:10

回答

2

你不通過你的POST值的形成。

if request.method == 'POST': 
    properties_Form = BodyPropertiesForm(request.POST) 
+0

在我的情況下,當我按提交輸入POST字典是空的(該方法應該是GET)。因此這個IF語句是錯誤的。 – vbknez 2015-04-02 16:08:54

+0

然後你沒有向我們展示你的真實模板,因爲你在那裏明確地設置了method = POST。 – 2015-04-02 16:26:32

+0

這就是困擾我的東西。然而,GET代碼填充了表單域中的數據。 – vbknez 2015-04-02 18:02:51

0

可以在終端看它是否是postget request.Here數據將post我think.The問題這query dict是空的,因爲,

class NameForm(forms.Form): 
    your_name = forms.CharField(label='myfieldname', max_length=100) 

所以label應該有在form.This可以view被取爲request.POST['myfieldname']。還有,你必須使用

properties_Form = BodyPropertiesForm(request.POST) 

希望這有助於