Zgodnie z samouczkiem Django, powinieneś uzyskać dostęp do pól formularza za pomocą clean_data dictionary. Zastanawiam się, dlaczego nie mam bezpośredniego dostępu do właściwości formularza? Moja forma sprawdza się poprawnie, ale kiedy próbuję uzyskać do niej dostęp, Django skarży się, że obiekt nie ma atrybutu. Dodałem kod poniżej, mam nadzieję, że pomoże zdiagnozować problem.Uzyskiwanie dostępu do pól formularza jako właściwości w widoku django
Postać:
class CustomForm(forms.Form):
description = forms.CharField(widget = forms.TextInput(attrs = {'placeholder' : 'enter some text'}), label = "My form")
Widok:
def process_form(request):
if request.method != 'POST':
raise Http404
myForm = CustomForm(request.POST)
if not myForm.is_valid():
c = RequestContext(request)
return render_to_response('home/index.html', {'form' : myForm }, c)
# debug
print 'Description: ' + myForm.description # this does NOT work
# print 'Description: ' + myForm.cleaned_data['description'] # this does work
pojawia się następujący błąd: obiekt '' Customform nie ma atrybutu 'opis'. Czy tęskniłem za czymś w dokumentach, które mówią, że nie mogę tego zrobić?
Rozumiem, że można do niego dostęp za pomocą cleaned_data. Czego nie rozumiem, to dlaczego nie mogę uzyskać do niego dostępu za pomocą samej właściwości: myForm.description. Co dokładnie dzieje się pod maską, która uniemożliwia mi dostęp do niego? –