我正在编写一个自定义小部件,需要一些支持的javascript代码,我需要输出一些。
选项包括:
onReady
部分。我的直觉是避免这样的事情:
<!-- original widget output -->
<input id="date" />
<-- Appended javascript -->
<script type="text/javascript">
jQuery('#date').datepicker()
</script>
相反,我最近在我的PHP项目中选择了第3项。 Django有一个很好的做2或3的方法吗?我希望我可以从我的widget render
函数的上下文中使用这种方法。如果我的小部件对它所处的形式一无所知,这可能会排除选项2)。
答案 0 :(得分:11)
答案 1 :(得分:0)
如果您要在Django表单字段下添加一些内联JavaScript,则可以在表单字段上添加覆盖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的表单字段下方显示右侧。