django - 在html中看不到my_error值

时间:2012-10-25 13:43:22

标签: django django-templates

这看起来像是一个愚蠢的错误,但我没有看到它((我无法在模板中看到my_error值。

这是我的views.py

def tasks(request, my_error=''):
    print my_error.encode('utf8')
    user = request.user.username
    try:
        fio = Worker.objects.get(login=user)
    except Worker.DoesNotExist:
        fio = 'Нет такого пользователя'
    if user not in admins:
        tasks = Task.objects.filter(worker=fio)
    else:
        tasks = Task.objects.filter()
    # here I can still see value of my_error
    print my_error.encode('utf8')
    return render_to_response('tasks.html',{'user':user,'fio':fio,'tasks':tasks, 'my_error':my_error})

我的模板:

{% extends "base.html" %}
{% block title %}
Список тикетов
{% endblock %}
{% block style %}
<meta http-equiv="refresh" content="60">
{% endblock %}
{% block content %}
    Привет, {{ fio.fio }}
<br />

{# {% if my_error %} #}
<h1>{{my_error}}</h1>
{# {% endif %} #}

<ol>
    {% for task in tasks %}
        <li><a href="../task/{{task.id}}">{{task.name}}<a></li>
    {% endfor %}
</ol>
<a href="/new_ticket/">Добавить задачу</a> <br />

{% endblock %}

这里我用my_error调用tasks():

tasks(request, my_error=u'Такой задачи нет. Возможно она была уже удалена')

但是,如果我使用

return render_to_response('tasks.html',{'user':user,'fio':fio,'tasks':tasks, 'my_error':'my_error'})

我在html中看到

my_error

。怎么了?

1 个答案:

答案 0 :(得分:1)

except Task.DoesNotExist:
    print 'here'
    tasks(request, my_error=u'Такой задачи нет. Возможно она была уже удалена')

应该是

except Task.DoesNotExist:
    print 'here'
    return tasks(request, my_error=u'Такой задачи нет. Возможно она была уже удалена')

ps:将你的代码的重要部分粘贴到初始帖子中,这样其他人就可以真正知道这里发生了什么,并在评论中挖掘(也就是说:粘贴视图中的task()被调用)