显示使用flask app访问的最后页面列表

时间:2012-11-15 20:23:22

标签: python html heroku flask

我发现了这个问题(How to display a list of "latest pages visited"),关于如何显示在轨道上访问ruby的最新页面列表。怎么用烧瓶做这个?你使用网址吗?代码看起来像这样,我也使用Heroku。

app = Flask(__name__)

app.secret_key = 'supersecretkey'

def login():
    session['username'] = "someuser"
    session['urls'] = []

@app.after_request
def store_visted_urls():
    session['urls'].append(request.url)
    if(len[session['urls']) > 5:
        session['urls'].pop(0)
    session.modified = True

@app.route('/')
def index():
    data = []
    if 'urls' in session:
        data = session['urls']
    return  render_template('page1.html',data=data)

@app.route('/page2', endpoint='page2')
def index():
    return  render_template('page2.html')

@app.route('/page3', endpoint='page3')
def index():
    return  render_template('page3.html')

if __name__ == '__main__':
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

我希望在每个页面(第1页,第2页,第3页)上都有一个部分显示最后访问的页面。

另外,在这个问题上(Show recently visited html pages by any visitor)有人建议使用cookies。这是一个更好的方法吗?

2 个答案:

答案 0 :(得分:0)

如果要存储用户的页面访问/ URL历史记录,则可以使用会话。每次请求后,将访问过的URL存储在会话中。类似的东西:

必须将

密钥设置为使用会话

app.secret_key = 'some secret key'

登录功能,您可以在其中初始化会话变量。

def login():
    session['username'] = "someuser"
    session['urls'] = []

下面的函数使用after_request装饰器在每个用户请求后存储访问过的URL。

@app.after_request
def store_visted_urls():
    session['urls'].append(request.url)
    if(len[session['urls']) > 5:
        session['urls'].pop(0)
    session.modified = True

查看显示上次查看页面的功能

@app.route('/')
def index():

data = []
if 'urls' in session:
data = session['urls']
return  render_template('page1.html',data=data)

答案 1 :(得分:0)

尝试一下:

url = request.url
if 'urls' in session:
    urls_list = session['urls']
    if not url in urls_list:
        urls_list.append(url)
        if len(urls_list) > 5:
            urls_list.pop(0)
            session['urls'] = urls_list
else:
     session['urls'] = [url]