Django: лучший способ добавить Javascript в пользовательские виджеты
Я пишу пользовательский виджет, который требует некоторого поддерживающего кода JavaScript, который мне нужен для вывода.
Варианты:
- Сделайте дамп сразу после HTML-кода.
- Добавьте его к носителю формы.
- Добавить его в глобальный
onReady
раздел.
Мой инстинкт инстинкта - избегать таких вещей, как:
<!-- original widget output -->
<input id="date" />
<-- Appended javascript -->
<script type="text/javascript">
jQuery('#date').datepicker()
</script>
Вместо этого я выбрал пункт 3) совсем недавно в моих проектах PHP. У Django есть хороший способ сделать 2 или 3? Я надеюсь, что смогу использовать эту методологию из контекста моего виджета render
функция. Это может исключить вариант 2), если мой виджет не имеет представления о форме, в которой он находится.
1 ответ
Посмотрите на форму СМИ http://docs.djangoproject.com/en/dev/topics/forms/media/
Если вы хотите добавить встроенный код JavaScript под полем формы Django, вы можете добавить перезапись render
в поле формы. Ниже я создал настраиваемое поле ввода, взял обработанный HTML-код и добавил новый<script>...</script>
к выходу.
from django import forms
from django.utils.safestring import mark_safe
class CustomInputField(forms.TextInput):
def render(self, name, value, attrs=None, renderer=None):
html = super().render(name, value, attrs)
inline_code = mark_safe(
"<script>jQuery('#date').datepicker()</script>"
)
return html + inline_code
Это поместит прямо под вашим полем формы в HTML.