【发布时间】:2011-08-25 22:03:59
【问题描述】:
我可以在 Javascript 中使用 Django 的模板标签吗?就像在 jQuery 中使用 {% form.as_p %} 来动态地向页面添加表单一样。
【问题讨论】:
-
我想你试试就知道了:)
标签: javascript jquery django django-templates
我可以在 Javascript 中使用 Django 的模板标签吗?就像在 jQuery 中使用 {% form.as_p %} 来动态地向页面添加表单一样。
【问题讨论】:
标签: javascript jquery django django-templates
是的,我经常这样做。您的 javascript 必须通过 django 提供,但如果您只是将其作为内联 javascript 放在 html 标头中,您就可以了。
例如:我用它在我使用的动态表单集上添加前缀。
{% 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 %}。
【讨论】:
<script> $(document).ready(function(){ $('#delete').submit.function(e){ e.preventDefault(); var station_id = {{ station.id }} $.ajax({ type: 'POST', url: '/station/' + station_id, headers: {'X_METHODOVERRIDE': 'DELETE'} }); }); }); </script> 你看到我在这个脚本 (var station_id = {{ station.id }}) 中使用 Django 的模板语言不起作用的任何原因。
如果这就是你的意思,你不能在你的 Javascript 代码中使用 Django 的模板标签。在模板被渲染并且 HttpResponse 被发送到客户端之后,所有的 Django 变量和逻辑都停止存在。在 Javascript 执行的那一刻,客户端(浏览器)不知道您渲染模板时使用的变量(例如“表单”)。
您可以做的是让 Javascript 使用您的 Django 模板呈现的 HTML 块来修改您的 HTML 页面。
如果您想在客户端生成 HTML,我建议您查看客户端模板库(例如 JQuery Templates - 使用带有 {% verbatim %} templatetag 的那些)。
【讨论】:
如果您想在渲染的 javascript I 中使用变量(这是我的选择),认为这是个坏主意。但是,如果您只想为您的视图、媒体和静态文件生成 URL,我会经常这样做。
看看这个github:jscssmin
【讨论】:
是的,你可以使用`
示例:`{{ user.username }}`
确保这不是单引号,而是 '(反引号/反引号)
【讨论】: