Django response.session在localhost上表现不同

时间:2015-08-29 08:39:02

标签: python django python-3.x

我在Django(v1.8)应用程序中有以下几行。

{% if failed < 5 %}
    <div class="centered row">
        <div class="ui error message six wide column">
            <div class="content">
                The username and password provided do not match. Please try again.
            </div>
        </div>
    </div>
{% endif %}

failed正在传递给模板,如下所示:

if 'failed_logins' in request.session:
    request.session['failed_logins'] = request.session.get('failed_logins', 0) + 1
view = render(request, 'main/login.html', {
    'page_title': PAGE_TITLE,
    'failed': request.session['failed_logins']
})

我的本​​地主机和我的服务器failed{{ failed }}模板中呈现时都显示为空。这是可以预料的,它在第一次加载时不存在。

但是在localhost上,这会导致{% if failed < 5 %}显然评估为false,因为消息未显示。这对我来说很有意义,因为它在localhost上进行了测试,我认为它是定义的行为。

在服务器(AWS)上虽然{% failed < 5 %}似乎评估为true。将显示该消息。这个对我有意义,因为可能None被认为比任何东西都要少。但它让我感到困惑,因为它在本地服务器上运行一种方式,在远程服务器上运行另一种方式。

可能导致这种差异的原因是什么?

1 个答案:

答案 0 :(得分:0)

你是本地的Python 2,还是服务器上的Python 3?评估None的方式发生了变化:

https://docs.python.org/3/whatsnew/3.0.html#ordering-comparisons