我目前正在使用django開始web開發。在我的申請中,我想要一個包含各種問題及其選擇的表單。django:request.POST鍵是空的,如果沒有設置選擇域值
在models.py,一個表創建存儲問題
class QuizItems(models.Model):
question = models.CharField(max_length=255)
choices = SeparatedValuesField(token="$")
answer = models.IntegerField()
在form.py,我在過載Form類的__init__方法,以qchoose通過,名單QuizItems實例來創建表單域。
def choiceItem(question):
return [(unicode(idx), q) for idx, q in enumerate(question.choices)]
class QuizForm(forms.Form):
def __init__(self, qchoose, *args, **kwargs):
super(QuizForm, self).__init__(*args, **kwargs)
for q in qchoose:
self.fields[str(q.id)] = forms.ChoiceField(required=True,
label=q.question, widget=forms.RadioSelect(),choices=choiceItem(q))
然後在view.py
if request.method == 'POST':
idlst = request.POST.keys()
else:
# qchoose is a list of quizitems
form = QuizForm(qchoose)
在quiz.html
{% for field in form %}
<li><b> {{ field.label }} </b></li>
<ul> {{ field }} </ul>
{% endfor %}
我想idlst,問題編號清單,我可以得到來自正確的答案。當所有的選擇域都被填充時,它工作正常。問題是如果有任何選擇字段的值是空的,我不會得到它的關鍵。我想因爲request.POST是一個字典,它應該返回所有的鍵,即使它的值是空的。
任何人都可以幫助我什麼是我的代碼錯了或缺少什麼?謝謝!
最初我不確定您是否正在檢查request.POST QueryDict django的值是否回傳給您。您沒有向我們展示發生實際錯誤的代碼行。 – wlashell