3

独自のテンプレートタグを作成しようとしています。私がこれを行った方法:

フォルダ構造:

my_app/
    __init__.py
    models.py
    views.py
    my_app/
        templates/
            show.html
    templatetags/
            __init__.py
            depos.py

depos.py:

# coding: utf-8
from django import template
from core.models import Depos

register = template.Library()

@register.inclusion_tag('show.html')
def show_dep():
    dep = Depos.objects.all().order_by('?')[0]
    return dep

show.html:

<div id="user_testimonial">
    <blockquote>
        <p>{{ dep.dep }}</p>
        <cite>{{ dep.name }}, {{ dep.from }}</cite>
    </blockquote>
</div>

私のテンプレートで:

{% load depos %}
{% show_dep %}

しかし、私はこのエラーがあります:

TypeError at /cadastro  
'Depos' object does not support item assignment
4

1 に答える 1

7

包含タグから包含タグ テンプレートにディクショナリ オブジェクトを渡す必要があります。ドキュメントで言及されています:

最初に、引数を取り、結果のデータの辞書を生成する関数を定義します。ここで重要な点は、ディクショナリを返すだけでよく、複雑なものは何も返さないということです。

だから試してください:

@register.inclusion_tag('show.html')
def show_dep():
    return {
        'dep' : Depos.objects.all().order_by('?')[0]
    }
于 2013-04-02T21:38:55.580 に答える