2

我已经在这个圈子里跑了很长一段时间了。我遇到了模板无法呈现我的活动场地的问题。我只得到 {% else %} 语句。任何帮助是极大的赞赏。谢谢!

楷模:

class Shows(models.Model):
    event_date = models.DateField("Date of event")
    venue = models.CharField(max_length=100)

    def __unicode__(self):
        return u'%s' % (self.venue)

意见:

from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext

from events.models import Shows


def show_results(request):
    """
    Events - this is the events section.
    """
    events = Shows.objects.all()

    return render_to_response("events/events.html", {
        "events": events,
    }, context_instance=RequestContext(request))

模板:

<h2>These are events for this month</h2>
{% if events %}
    {% for e in events %}
       <ul>
            <li>{{ e.venue }}</li>
        </ul>
    {% endfor %}
{% else %}
    <p>There are no events at this time.</p>
{% endif %}

文件结构:

/myapp
    /deploy
    /events
        /templates
            /events
                events.html
        admin.py
        models.py
        urls.py
        views.py
    /requirements
    /static
    /templates
    manage.py
    settings.py
    urls.py
4

1 回答 1

0

您的模板正在尝试迭代events,就好像它是一个Shows实例列表一样。但是,get_object_or_404返回单个对象。现在,您可能在数据库中只有一条记录,因此get_object_or_404不会引发异常。

为了events存储对象列表而不是单个实例,您可以替换get_object_or_404为:

events = Shows.objects.all()

这将返回所有Shows实例的列表。

于 2012-10-07T20:13:49.023 回答