현재 django를 사용하여 웹 개발을 시작하고 있습니다. 신청서에 다양한 질문과 선택 사항이있는 양식이 필요합니다. , qchoose 목록을 전달하도록django : choicefield 값이 설정되지 않은 경우 request.POST 키가 비어 있습니다.
models.py에서, 테이블 form.py에서 질문
class QuizItems(models.Model):
question = models.CharField(max_length=255)
choices = SeparatedValuesField(token="$")
answer = models.IntegerField()
를 저장하도록 생성된다 I 폼 클래스의 __init__ 방법 과부하 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))
그 다음에 내가 얻을 수, idlst 질문 ID의 목록을 얻으려면 view.py
if request.method == 'POST':
idlst = request.POST.keys()
else:
# qchoose is a list of quizitems
form = QuizForm(qchoose)
{% for field in form %}
<li><b> {{ field.label }} </b></li>
<ul> {{ field }} </ul>
{% endfor %}
quiz.html 에서 에서 정확한 답. 모든 선택 필드가 채워지면 제대로 작동합니다. 문제는 choicefield 값이 비어 있으면 키를 얻지 못하는 것입니다. 나는 요청 이후 생각합니다 .POST는 사전이며, 값이 비어 있어도 모든 키를 반환한다고 가정합니다.
누구든지 내 코드 또는 누락 된 점이 무엇이든지 도움이 될 수 있습니까? 고맙습니다!
처음에는 요청 값을 확인하고 있는지 확신 할 수 없습니다 .POST QueryDict django가 답장을 보내고 있습니다. 실제 오류가 발생한 코드 행을 표시하지 않습니다. – wlashell