2016-06-06 2 views
0

'이 입력란은 필수 입력란'을 얻을 수 없습니다. 아니요이 내 양식이 인스턴스화 될 때 페이지에 표시됩니다. 또한 Django + Bootstrap을 사용하고 있습니다.'이 입력란은 필수 항목입니다.' 입력 옆에 GET 요청이 표시됩니다.

forms.py

class RatingForm(forms.Form): 
name = forms.CharField(
    label='', 
    widget=forms.TextInput(attrs={'class': 'form-control'}), 
    ) 
rating = forms.ChoiceField(
    label='', 
    widget=forms.RadioSelect(attrs={'class': ''}), 
    choices=RATING_CHOICES, 
    ) 

views.py 기능

thing = Thing.objects.get(name=thing_name) 
rating_form = RatingForm(request.POST) # get form for adding a Rating to Thing 

args={'thing':thing, 'rating_form':rating_form} 
args['ratings'] = thing.ratings.all() 

if request.method == 'POST': 
     ... 
     ... 
     ... 
    else: 
     return redirect('/') 
else: 
     if thing: 
      # This is the page I'm loading that I'm having problems with 
      return render(request, 'thing_page.html', args) 
     else: 
      return redirect('/') 

HTML 도움 :) 사전에

<form class='form-inline' method="post">{% csrf_token %} 
<label for="id_name">Create A New Rating:</label><br /> 
{{ rating_form|removetags:"li ul" }} 
<input class="btn btn-default" type="submit" value="add rating" /> 
</form> 

덕분에

답변

2

request.POST을 통과해야 ~에 POST 요청의 경우 m입니다. 당신은 GET 요청에 대한 RatingForm(request.POST)를 사용하는 경우 필요한 필드에 대한 오류를 얻을 수 있도록

if request.method == 'POST': 
    rating_form = RatingForm(request.POST) 
    ... 
else: 
    rating_form = RatingForm() 

request.POST는 비어 있습니다. 대신 GET 요청에 RatingForm()을 사용해야합니다. 언 바운드 형식이 만들어 지므로 유효성 검사 오류가 발생하지 않습니다.

자세한 내용은 bound and unbound forms의 문서를 참조하십시오.

+0

아! 그렇게 명백하다! 고마워 Alasdair :) – Jarrod

관련 문제