Flask 报警 NoneType object has no attribute 'delete_cookie'
高洛峰
高洛峰 2016-10-22 16:24:53
0
1
1287

在VPS上部署Flask Web开发上面的那个app

Python 3.4 + Gunicorn + Nginx

目前可以通过IP来访问到网站主页,但是,当我点击LOGIN想来转到登录页面的时候,他却报错NoneType object has no attribute 'delete_cookie'

下面是我的路由代码

from flask import render_template,redirect,request,url_for,flash
from flask.ext.login import login_user,current_user
from . import auth
from ..models import User
from .forms import LoginForm,RegistrationForm,ChangePasswordForm,PasswordResetRequestForm,PasswordResetForm,ChangeEmailForm
from flask.ext.login import logout_user,login_required
from app import db
from ..email import send_email

@auth.route('/login',methods=['GET','POST'])       #登录页面
def login():
    form=LoginForm()
    if form.validate_on_submit():
        user=User.query.filter_by(email=form.email.data).first()
        if user is not None and user.verify_password(form.password.data):
            login_user(user,form.remember_me.data)
            return redirect(request.args.get('next')or url_for('main.index'))
        flash('Invalid username or password.')
    return render_template('auth/login.html',form=form)

以下是我的login.html文件

{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}Flasky - Login{% endblock %}
{% block page_content %}
<div class="page-header">
    <h1>Login</h1>
</div>
<p>
New user?
<a href="{{ url_for('auth.register') }}">
Click here to register
</a>

<div class='col-md-4'>
    {{ wtf.quick_form(form) }}
</div>
<br>
<br>
<br>
<br>
<br>
<a href="{{url_for('auth.password_reset_request')}}">Forget Password?</a>
</p>

{% endblock %}

以及我的报错信息

1.jpg

1.jpg

有没有前辈碰到过这个问题,请指教有需要添加的信息,请告诉我

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(1)
三叔

解决了问题, 感谢 @citaret 前辈的指点,让我把github上运行的文件重新拉回本地测试。
最后发现在本地运行也有问题,问题出在 main下面的views里面
有一个after_app_request的功能,最后return response的时候,多打了一行缩进,导致了这个问题
正是因为多了一段缩进,导致了没有response返回,变成了NoneType

想起来最后加完这个功能以后没有本地测试直接upload到github上去了,所以才会这样.

@main.after_app_request
def after_request(response):
    for query in get_debug_queries():
        if query.duration >= current_app.config['FLAKSY_SLOW_DB_QUERY_TIME']:
            current_app.logger.warning('Slow query: %s\nParameters: %s\nDuration: %fs\nContext: %s\n' %
                (query.statement, query.parameters, query.duration,
                query.context))
    return response


いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート