Jak wyświetlić wartość pola formularza Django w szablonie?
Mam formularz z właściwością e-mail.
Używając
{{form.email}}w przypadku błędu walidacji, Django nadal wyświetla poprzednią wartość w atrybucie value tagu wejściowego:
<input type="text" id="id_email" maxlength="75" class="required"
value="some@email.com" name="email">
Chcę samodzielnie renderować tag wejściowy (aby dodać kod JavaScript i klasę błędu w przypadku błędu). Na przykład to jest mój szablon zamiast
{{form.email}}:
<input type="text" autocomplete="on" id="id_email" name="email"
class="email {% if form.email.errors %} error {% endif %}">
Jednak to nie pokazuje użytkownikowi niewłaściwej wartości (w tym przykładzie
some@email.com).
Jak uzyskać wartość pola w szablonie?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
11 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Oto błąd:
https://code.djangoproject.com/ticket/10427
https://code.djangoproject.com/ticket/10427
Zasadniczo, jeśli uruchamiasz coś po 1.3, to w szablonach Django możesz to zrobić:
Lub w Jinja2:
Zauważ, że jest metodą, ale w szablonach Django pomija się , podczas gdy w Jinja2 wywołania metod są jawne.
Jeśli chcesz wiedzieć, której wersji Django używasz, powie ci, kiedy uruchomisz polecenie runningerver.
Jeśli korzystasz z czegokolwiek wcześniejszego niż 1.3, prawdopodobnie możesz użyć poprawki opublikowanej w powyższym błędzie:
https://code.djangoproject.com ... nt:24
https://code.djangoproject.com ... nt:24
Anonimowy użytkownik
Potwierdzenie od:
Spowoduje to wyświetlenie wartości instancji (jeśli formularz jest utworzony za pomocą instancji, możesz zamiast tego użyć początkowego, jeśli chcesz) lub wyświetlić dane POST, na przykład gdy wystąpi błąd walidacji.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Spróbowałem tego i zadziałało. Wymaga to od widoku wypełnienia klasy formularza danymi POST.
Bardzo prosty przykład:
Mam nadzieję, że to ci pomoże. Jeśli masz jakieś pytania, daj mi znać.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Okazuje się jednak, że jeśli zainicjujesz ModelForm z
Instancja
(przykład poniżej) to django nie wypełni danych:
Dlatego utworzyłem własną podstawową klasę ModelForm, która wypełnia surowe dane:
Wtedy prosty przykład widoku wygląda następująco:
Anonimowy użytkownik
Potwierdzenie od:
Staram się to wyjaśnić w sposób, który ułatwi zrozumienie dla początkujących. Zwróć szczególną uwagę na
Oto, co otrzymuje wartość atrybutu, na przykład:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Powyższe rozwiązania nie sprawdziły się u mnie zbyt dobrze i wątpię, czy sprawdzą się w przypadku formularzy z prefiksami (jak kreatory i zestawy formularzy).
Rozwiązania korzystające z mogą nie działać, ponieważ jest to wyszukiwanie w słowniku, a w przypadku formularzy z prefiksami nazwa pola będzie wyglądać jak „1-e-mail” (kreator i formularz przedrostka) lub „form-1-email” (zestaw form), a znak minus (-) nie jest dozwolony w wyrażeniach wyszukiwania wzorca kropkowego.
to tylko Django 1.3+.
Anonimowy użytkownik
Potwierdzenie od:
Jak powiedzieli inni, {{form.field.value}} to tylko Django 1.3+, ale w
https://docs.djangoproject.com ... orms/
https://docs.djangoproject.com ... orms/
brak specyfikacji. Można go znaleźć w
https://docs.djangoproject.com ... orms/
https://docs.djangoproject.com ... orms/
.
Anonimowy użytkownik
Potwierdzenie od: