0

私はDjangoが初めてです。scriptビューを使用して配列をテンプレートに渡すことができるように、ブロック継承 (複数またはstyleタグの場合) を使用してテンプレート内の html を複数回繰り返す最善の方法を知りたいです。

これは、多重継承などを使用して実行できると考えていましたが、そのような実装を開始する方法がわかりません。

4

2 に答える 2

1

私があなたを正しく理解していれば、あなたはこのようなことができると思います。

def ExampleView(request):
    items=___ #Whatever objects you want to work on
    return render(request, 'template.html', {'items': items,})

そして、あなたのテンプレート。

template.html
...
{% for item in items %}
    <-- Whatever you want to do for each item -->
{% endfor %}

誤解していた場合は、お知らせください。

于 2013-07-24T16:40:03.337 に答える
1

うーん、あなたの質問はまだ明確ではありませんが、一般的に、これは Django でテンプレートを作成する方法です。

というメイン ファイルが 1 つbase.htmlあります。これは、他のすべてのテンプレートが拡張/継承するベース テンプレートです。でbase.html定義できblock、子テンプレートで、そのブロックに情報を追加できます。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Title</title>

    <link rel="stylesheet" href="{{ STATIC_URL }}css/main.css">
    {% block additional_css %}{% endblock %}        

    <script src="{{ STATIC_URL }}js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
</head>

<body>
    {% block content %}{% endblock %}

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    {% block additional_js %}{% endblock %}
</body>
</html>

例でわかるように、 、 、 の 3 つのブロックを定義additional_csscontentましたadditional_js。子テンプレートでは、これらのブロックを拡張して、必要な情報を含めることができます。たとえば、テンプレート名がありますchild.html

{% extends "base.html" %}

{% block additional_css %}
<link rel="stylesheet" href="{{ STATIC_URL }}css/child.css">
{% endblock %}

{% block content %}
<h1>Welcome to my site!</h1>
{% endblock %}

リストをテンプレートにブロックで渡したい場合は、簡単です。ビューから渡されたリスト呼び出しall_js_filesを例にすると、テンプレートには次のものがあります。

{% block additional_js %}
    {% for js_file in all_js_files %}
        <script src="{{ js_file }}"></script>
    {% endfor %}
{% endblock %}

基本的な考え方を教えてください。

于 2013-07-24T16:43:41.537 に答える