无法在Django中使用include标记加载模板中的对象

时间:2012-12-13 12:21:52

标签: python django django-templates

我想在home.html模板中显示对象,该对象主要在laglist模板中。我使用include标签来执行操作,但它不起作用。以下是我的代码:

laglist.html

   {% extends "base.html" %}

    {% block lag %}
        <h2>Lam </h2>

        {% for leggo in leggos  %}
           <p><a href= "{% url halldetail leggo.id %}" >{{ leggo.name }}</a><p>
      <img src="{{MEDIA_URL}}/{{leggo.thumbnail_1.url}}" width="83" height="78"> <img src="{{MEDIA_URL}}/{{leggo.thumbnail_2.url}}" width="83" height="78" />

        <li>{{ leggo.state }}</li>
         {% endfor %}

    {% endblock %}

查看laglist:

    def lag_view(request):
        leggos=Fin.objects.filter(state='venu')
        for leggo in leggos:
            print leggo.id
        return render_to_response('laglist.html',  {'leggos':leggos,'leggo':leggo,'Fin':Fin},context_instance=RequestContext(request))

home.html的

 {% extends "base.html" %}
 {% block content %}

   <p> {% include 'laglist.html' %} </p>
 {% endblock %}

观看家庭

 def homp(request):
    return render_to_response('home.html',context_instance=RequestContext(request))

2 个答案:

答案 0 :(得分:3)

这似乎是一个相当普遍的误解,虽然我不明白为什么。

视图渲染模板,而不是相反。模板与视图没有任何关联,包括模板也不会调用视图。

如果要包含模板和一些Python代码,则需要编写自定义模板标记 - 可能需要inclusion tag

答案 1 :(得分:0)

您需要将leggos字典传递到您的主视图才能使其正常工作。所以在您的家庭视图中尝试这个。

def home(request):
    data = {}
    data['leggos'] = Fin.objects.filter(state='venu')
    return render_to_response('home.html', data, context_instance=RequestContext(request))

然后在laglist.html中试试这个:

{% if leggos %}
    {% for leggo in leggos %}
        <p> {{ leggo }} </p>
    {% endfor %}
{% else %}
    <p> Sorry, No Leggos Found.</p>
{% endif %}