Web.session.Session, похоже, не хранит значения через сеанс - PullRequest
0 голосов
/ 02 ноября 2019

Для моего проекта мне нужно создать сеть с использованием python, отслеживать некоторые данные и связывать их с браузером пользователя. Я использую библиотеки web.py и web.session.Session () для отслеживания информации через браузер при обновлении или перенаправления страницы с помощью web.seeother ('/').

Iследовали приведенным в документации примерам: пример количества и пример входа в систему , но, похоже, они не работают. Похоже, переменная сеанс переинициализируется каждый раз, когда я обновляю браузер, или активируется web.seeother ('/').

В этом первом примере при переходе в браузер отображается значение session.countдо 1, и при обновлении страницы каждый раз отображается значение 2 (я ожидаю, что буду продолжать увеличивать это значение).

import web

web.config.debug = False

urls = (
    "/count", "count",
    "/reset", "reset",
)

app = web.application(urls, locals())

# Store session data in folder 'sessions' under the same directory as your app.
session = web.session.Session(app, web.session.DiskStore("sessions"), initializer={"count": 0})

class count:
    def GET(self):
        session.count += 1
        return str(session.count)

class reset:
    def GET(self):
        session.kill()
        return "Reset"

if __name__ == "__main__":
    app.run()

В этом втором примере нажатие на ссылку «Войти сейчас» не меняет браузер, поэтому вы никогда не входите в систему.

import web


urls = (
    '/', 'Index',
    '/login', 'Login',
    '/logout', 'Logout',
)

web.config.debug = False
app = web.application(urls, locals())
session = web.session.Session(app, web.session.DiskStore('sessions'))      

class Index:
    def GET(self):
        if session.get('logged_in', False):
            return '<h1>You are logged in</h1><a href="/logout">Logout</a>'
        return '<h1>You are not logged in.</h1><a href="/login">Login now</a>'

class Login:
    def GET(self):
        session.logged_in = True
        raise web.seeother('/')

class Logout:
    def GET(self):
        session.logged_in = False
        raise web.seeother('/')


if __name__ == '__main__':
    app.run()

Все указывает на то, что информация не сохраняется должным образом, или значения инициализируются снова, или я не понял, как работают сеансы.

Я использую Python 3.7.2 на Windows 10.

Есть идеи?

...