Почему не работает оператор If в django? - PullRequest
0 голосов
/ 07 июня 2011

Я работал на примере оператора if, но по какой-то причине не могу заставить его работать.Я перепробовал каждое возможное утверждение в «если», но кажется, что ничто не делает его верным для выполнения оператора if.Вместо этого выполняется оператор Else.

Sample

{% 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 %}

Mine

{% 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 Ответ

3 голосов
/ 07 июня 2011

Убедитесь, что вы действительно передаете entry в контекст.Например:

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

Неустановленные переменные ведут себя как переменные, установленные в None в шаблонах Django.

ОБНОВЛЕНИЕ:

Сделаны некоторые изменениякод вашего просмотра;даже не уверен, как вы добрались до шаблона рендеринга с тем, что у вас было.

Оригинал:

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, так как она состоит из нескольких элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...