我可以在Javascript中使用Django的模板标签吗?就像在jQuery中使用{% form.as_p %}
来动态地向页面添加表单一样。
答案 0 :(得分:27)
是的,我经常这样做。你的javascript必须通过django提供,但是如果你只是在html标题中将它作为内联javascript你就可以了。
例如:我使用它在我使用的动态表单上添加前缀。
{% extends "base.html" %}
{% block extrahead %}
<script type="text/javascript">
$(document).ready(function() {
{# Append fields for dynamic formset to work#}
{% for fset, cap, _, tid in study_formsets.fset_cap_tid %}
$(function() {
$('.form_container_{{ tid }}').formset({
prefix: '{{ fset.prefix }}',
formCssClass: '{{ tid }}',
extraClasses: ['myrow1', 'myrow2']
});
});
{% endfor %}
});
</script>
{% endblock %}
在“base.html”中注意我有一个html head
,其中加载了jquery库,其中包含{% block extrahead %}{% endblock %}
。
答案 1 :(得分:11)
如果这是你的意思,你不能使用你的Javascript代码中的Django模板标签。在渲染模板并将HttpResponse发送到客户端之后,所有Django变量和逻辑都停止存在。在Javascript执行的那一刻,客户端(浏览器)不知道您使用模板生成的变量(例如“表单”)。
您可以使用Javascript修改您的HTML页面,使用由Django模板呈现的HTML块。
如果您想在客户端生成HTML,我建议您查看客户端tempalte库(例如JQuery Templates - 使用{% verbatim %} templatetag)。
答案 2 :(得分:0)
如果你想在渲染的javascript中使用变量我(这是我的意见),那么认为这是一个坏主意。但如果您只想为视图,媒体和静态文件生成URL,我会做很多事情。
看看这个github:jscssmin