Для моего проекта мне нужно создать сеть с использованием 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.
Есть идеи?