Python 最近访问的页面列表AttributeError:';非类型';对象没有属性';设置cookie';

Python 最近访问的页面列表AttributeError:';非类型';对象没有属性';设置cookie';,python,flask,Python,Flask,我正在尝试使用会话创建上次访问页面的列表。我不断收到错误AttributeError:'Nonetype'对象没有属性'set\u cookie' 我想原因是@app.after_request部分,但我不知道如何修复它 Python代码 @app.route('/') def index(): session['urls'] = [] data = [] if 'urls' in session: data = session['urls']

我正在尝试使用会话创建上次访问页面的列表。我不断收到错误
AttributeError:'Nonetype'对象没有属性'set\u cookie'
我想原因是
@app.after_request
部分,但我不知道如何修复它

Python代码

@app.route('/')
def index():
    session['urls'] = []

    data = []
    if 'urls' in session:
        data = session['urls']

    timestamp = None

    t = time.strftime("%H:%M:%S")
    (h, m, s) = t.split(':')
    result = int(h) * 3600 + int(m) * 60 + int(s)

    if 0 <= result < 43200:
        timestamp = 'Goedemorgen'
    elif 43200 <= result < 64800:
        timestamp = 'Goedemiddag'
    elif 64800 <= result:
        timestamp = 'Goedeavond'

    resp = make_response(render_template('index.html', timestamp=timestamp, data=data))
    resp.set_cookie('visited', 'visited', expires=datetime.datetime.now() + datetime.timedelta(days=2))
    return resp


@app.after_request
def store_visited_urls(self):
    session['urls'].append(request.url)
    if(len(session['urls']) > 5):
        session['urls'].pop(0)
@app.route(“/”)
def index():
会话['URL']=[]
数据=[]
如果会话中有“URL”:
数据=会话['URL']
时间戳=无
t=time.strftime(“%H:%M:%S”)
(h,m,s)=t.split(“:”)
结果=int(h)*3600+int(m)*60+int(s)
如果0
上述错误表明对象
resp
具有
Nonetype
,这意味着
make\u response
正在返回
None
。 这就带我到了你的
make_response
函数,除了你正在传递的参数外,这个函数很好

问题在于:

def index():
    session['urls'] = []
无论何时调用对
'/'
的请求,都将
会话['url']
初始化为空列表,因此以下语句中的数据也不会得到任何内容:

if 'urls' in session:
        data = session['urls']
您需要分别初始化
会话['url']
,然后在
index()
函数中使用它

话虽如此,我假设您已将
app.secret\u key
设置为您的某个密钥


您的
after\u请求
看起来不错。

这里的问题是您实际上需要在@app.after\u请求的末尾返回响应对象

如果您不返回它,它就不会将其发送回Flask以将会话数据附加到

@app.after_request
def store_visited_urls(request):
    session['urls'].append(request.url)
    if(len(session['urls']) > 5):
        session['urls'].pop(0)
    return request
@app.after_request
def store_visited_urls(request):
    session['urls'].append(request.url)
    if(len(session['urls']) > 5):
        session['urls'].pop(0)
    return request