0

我发现了这个问题(如何显示“访问的最新页面”列表)关于如何显示为 ruby​​ on rails 访问的最新页面列表。你会如何用烧瓶做到这一点?你使用网址映射吗?代码看起来像这样,我也在使用 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)

我希望在每个页面(page1、page2、page3)上都有一个部分,显示最后访问的页面。

另外,关于这个问题(显示任何访问者最近访问的 html 页面)有人建议使用 cookie。这是更好的方法吗?

4

2 回答 2

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)
于 2012-11-15T21:40:15.107 回答
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]
于 2019-10-09T13:51:37.123 回答