web-dev-qa-db-ja.com

Django jQuery / Javascriptのテンプレートタグを使用しますか?

JavaScript内でDjangoのテンプレートタグを使用できますか? {% form.as_p %} jQueryで動的にフォームをページに追加します。

24
john2x

はい、頻繁に行います。 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 %}

28
dr jimbob

それが意味するところであれば、JavaScriptコードからDjangoのテンプレートタグを使用することはできません。すべてのDjango=変数とロジックは、テンプレートがレンダリングされてHttpResponseがクライアントに送信された後に存在しなくなります。Javascriptが実行されるその時点では、クライアント(ブラウザ)には変数の概念がありません(「フォーム」など)を使用してテンプレートをレンダリングした。

あなたができることは、DjangoテンプレートによってレンダリングされたHTMLのチャンクを使用して、JavaScriptにHTMLページを変更させることです。

クライアント側でHTMLを生成する場合は、クライアント側の一時ライブラリ(例 JQuery Templates - {%verbatim%} templatetag を使用してください)=を確認することをお勧めします=)。

11
Jj.

レンダリングされたJavaScript I内で変数を使用したい場合(それが私の意見です)、それは悪い考えだと思います。ただし、ビュー、メディア、および静的ファイルのURLを生成することだけが目的である場合は、これを頻繁に実行します。

このgithubを見てください: jscssmin

0
Gustavo Vargas