Stworzyłem model Django z trzema polami, w których jedno z nich jest ukryte, a pozostałe są widoczne
1.CharField
2.IntegerField (Hidden Field)
3.DateTimeField
Ukryłem to za pomocą następującego kodu:
class HostCreateForm(forms.ModelForm):
class Meta:
model = Host
widgets = {
'Zone_Vale': forms.HiddenInput()
}
Aby wyświetlić ten formularz, używam następującego kodu w moim szablonie:
<form action="" method="POST">
{{ form.as_p }}
<input type="submit" value="{% trans "Add host" %}" />
Wszystko jest w porządku, ale chcę również przekazać zmienną w tej ukrytej warstwie wejściowej. Nie mam pojęcia, jak to zrobić. Próbowałem to zrobić, dostosowując szablon (sprawdź ten link:) https://docs. djangoproject.com/en/dev/topics/forms/ ` Na przykład {{ form.as_p}} zwróci formularz zawierający dwa widoczne pola, a dane do nich to :(jaki użytkownik wpisał) i ukryte pole. Więc chcę przekazać zmienną do tego ukrytego pola z pliku template.html
To też nie działa. Potrzebuję twojej pomocy
2 odpowiedzi
Jeśli masz ochotę się pobrudzić, szybkim rozwiązaniem jest wypełnienie tego pola za pomocą javascript. Właściwym sposobem powinno być użycie parametru "initial" podczas tworzenia instancji obiektu formularza w view.py
Odniesienie: https://docs.djangoproject. com/pl/1.3/ref/forms/api/#django.forms.Form.initial
Nawet będąc bardzo brudnym, niektóre rozwiązania JavaScript, takie jak to, również powinny działać: (za pomocą jQuery. Dostosuj do swoich potrzeb)
<script type="text/javascript">
$(document).ready(function(){
$('form input[name$="Zone_Vale"]').val(DESIRED_HIDDEN_VALUE)
})
</script>
Ale nie bądź dumny z tego, że to robisz.
Nie będziesz w stanie przekazać zmiennej do pola na poziomie szablonu, biorąc pod uwagę sposób renderowania szablonu.
Jeśli naprawdę, bezwzględnie musisz przekazać zmienną do formularza na poziomie szablonu, sugerowałbym utworzenie tagu szablonu, który:
- Rozwiąż swoją zmienną z kontekstu żądania
- Utwórz wystąpienie klasy formularza, używając zmiennej jako części danych początkowych formularza
- Dodaj formularz do kontekstu, który ma być renderowany
Podobne pytania
Nowe pytania
django
Django to framework aplikacji internetowych typu open source po stronie serwera, napisany w języku Python. Został zaprojektowany w celu zmniejszenia wysiłku potrzebnego do tworzenia złożonych witryn i aplikacji internetowych opartych na danych, ze szczególnym naciskiem na mniej kodu, brak nadmiarowości i bardziej jawny niż niejawny.