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