1

表示する include_tag の内容を取得できません。エラーが発生していないので、タグが登録されていることがわかり、正しく読み込まれていることはほぼ確実です。タグはcrudapp/templatetags/crudapp_tags.pyで作成されます

from django import template
register = template.Library()

@register.inclusion_tag("forum.html")
def results(poll):
    form = 'blah'
    return {'form': form}

テンプレート/フォーラム.html

  {% extends 'index.html' %}
{% load crudapp_tags %}
{% results poll %}
<p>aaa</p>
{% block homepage %}
<p>bbb</p> <!-- Only this displays -->
{% if form %}
<p>Form exists</p>
{% endif %}
{% for item in form %}
<p>This is {{ item }}</p>
{% endfor %}
<div>
  <p>{% if user.is_authenticated %}Add a New Topic: <a href="{% url 'topic_form' %}"><span class="glyphicon glyphicon-plus"></span></a>{% endif %}</p>
</div>
<div>
  <p>{{ totalposts.count }} posts, {{ totaltopics.count }} topics, {{ totalusers.count }} users, {{ totalviews.numviews}} views</p>
</div>
{% endblock %}

ファイルの設定は次のとおりです。

ここに画像の説明を入力

4

1 に答える 1

3

包含タグを使用している場合、タグは別のテンプレートをレンダリングします。formを使用するコードをforum.html新しいテンプレートに移動する必要があります。results.html

results.html

{% if form %}
<p>Form exists</p>
{% endif %}
{% for item in form %}
<p>This is {{ item }}</p>
{% endfor %}

次に、このテンプレートを使用するようにタグを変更します

@register.inclusion_tag("results.html")
def results(poll):
    form = 'blah'
    return {'form': form}

最後に、テンプレートを拡張しているので、タグをブロックに移動する必要があります。そうしないと、結果が使用されません。

{% block homepage %}
{% results poll %}
...
{% endblock %}

別のテンプレートをレンダリングするのではなく、テンプレート コンテキストに項目を追加する場合は、代わりに単純なタグが必要です。

@register.simple_tag
def fetch_result():
    result = ['foo', 'bar']
    return result

次に、テンプレートで:

{% fetch_result as result %}

{% for item in result %}
<p>This is {{ item }}</p>
{% endfor %}

{% fetch_result as result %}Django 1.9+ の単純なタグで機能します。以前のバージョンでは、割り当てタグが必要です。

于 2016-05-23T13:01:16.230 に答える