JavaScript内でDjangoのテンプレートタグを使用できますか? {% form.as_p %}
jQueryで動的にフォームをページに追加します。
はい、頻繁に行います。 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」に注意してください。jqueryライブラリがロードされているhead
があり、{% block extrahead %}{% endblock %}
。
それが意味するところであれば、JavaScriptコードからDjangoのテンプレートタグを使用することはできません。すべてのDjango=変数とロジックは、テンプレートがレンダリングされてHttpResponseがクライアントに送信された後に存在しなくなります。Javascriptが実行されるその時点では、クライアント(ブラウザ)には変数の概念がありません(「フォーム」など)を使用してテンプレートをレンダリングした。
あなたができることは、DjangoテンプレートによってレンダリングされたHTMLのチャンクを使用して、JavaScriptにHTMLページを変更させることです。
クライアント側でHTMLを生成する場合は、クライアント側の一時ライブラリ(例 JQuery Templates - {%verbatim%} templatetag を使用してください)=を確認することをお勧めします=)。
レンダリングされたJavaScript I内で変数を使用したい場合(それが私の意見です)、それは悪い考えだと思います。ただし、ビュー、メディア、および静的ファイルのURLを生成することだけが目的である場合は、これを頻繁に実行します。
このgithubを見てください: jscssmin