为什么django中的If语句不起作用?

时间:2011-06-07 15:15:13

标签: django

我正在使用'if'语句的示例,但由于某种原因,我无法让它工作。 我在'if'中尝试了所有可能的语句,但似乎没有什么能使if语句运行。相反,Else语句会运行。

样品

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

<h2>Hardware Inventory</h2>

{% if hardware %}

<table id="datatable">
    <thead>
        <tr>
            <th>Name</th>
            <th>Manufacturer</th>
            <th>Category</th>
        </tr>
    </thead>
    <tbody>
    {% for item in hardware %}
        <tr>
            <td><a href="/inventory/hardware/{{ item.id }}">{{ item.name }}</a></td>
            <td>{{ item.manufacturer }}</td>
            <td>{{ item.kind }}</td>
        </tr>
    {% endfor %}
    </tbody>
</table>

{% else %}

<p>The inventory is empty.</p>

{% endif %}


{% endblock %}

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

<h2>News</h2>

{% if entry %}

{% for item in entry %}
<table id = "news">
    <tr>
        <td><a href="/news/Entry/{{ item.id }}">{{ item.title }}</a></td>
        <td>{{ item.body }}</td>
        <td>{{ item.pub_date }}</td>
    </tr>
</table>
{% endfor %}



{% else %}
<p>No News</p>
{% endif %}


{% endblock %}

我的view.py新闻,我不知道怎么写得正确,但我尝试了不同的组合,这一个错误此刻导致它崩溃

def index(request):
    return render_to_response('news/index.html', {'Entry': Entry}, context_instance=RequestContext(request))

def Entry(request):
    Entry = Entry.objects.all().order_by('pub_date')
    return render_to_response('news/Entry.html', {'item':item}, context_instance=RequestContext(request))

1 个答案:

答案 0 :(得分:3)

确保您实际上已将entry传递到上下文中。例如:

render_to_response('template.html', { 'entry': entry })

Unset变量的行为与Django模板中设置为None的变量相同。

<强>更新

对您的视图代码进行了一些修改;甚至不确定如何使用你拥有的模板进行渲染。

原件:

def index(request):
    return render_to_response('news/index.html', {'Entry': Entry}, context_instance=RequestContext(request))

def Entry(request):
    Entry = Entry.objects.all().order_by('pub_date')
    return render_to_response('news/Entry.html', {'item':item}, context_instance=RequestContext(request))

修改:

def index(request):
    entry = Entry.objects.all().order_by('pub_date')
    return render_to_response('news/index.html', {'entry': entry}, context_instance=RequestContext(request))

我认为您甚至不需要Entry方法,因此将其删除。我保持你的命名相同,但是调用变量entries是更好的形式,因为它是多个项目。