Форум сайта python.su
Доброго времени суток.
Есть 2 простые функции одна добавляет куки, вторая считывает:
@bottle.get('/ajax/add_product/<product_id>/<count>') def add_product(product_id = 0, count = 1): ttt = bottle.request.get_cookie("basket") basket = sessions.get_value(ttt, 'basket') print 'ttt 1: ', ttt print 'basket 1: ', basket if ttt == None: ttt = sessions.start_session('test_value', 'basket') bottle.response.set_cookie("basket", ttt) print 'new session id: ', ttt else: sessions.start_session('test_value', 'basket', ttt) print 'old session id: ', ttt bottle.redirect("/") @bottle.route('/basket') def basket(): dd = default_data() ttt = bottle.request.get_cookie("basket") basket = sessions.get_value(ttt, 'basket') print 'ttt 0: ', ttt print 'basket 0: ', basket return bottle.jinja2_template('basket.html', dict(dd, basket = basket))
Bottle v0.11.6 server starting up (using WSGIRefServer())... Listening on http://localhost:80/ Hit Ctrl-C to quit. ttt 1: thDEuRyzfmJjdNfHYHPWUoEvObusveka basket 1: None old session id: thDEuRyzfmJjdNfHYHPWUoEvObusveka 127.0.0.1 - - [10/Aug/2013 02:21:57] "GET /ajax/add_product/2/3 HTTP/1.1" 303 0 127.0.0.1 - - [10/Aug/2013 02:21:57] "GET / HTTP/1.1" 200 24858 ttt 0: None basket 0: None 127.0.0.1 - - [10/Aug/2013 02:21:59] "GET /basket HTTP/1.1" 200 19797
Отредактировано NurDus (Авг. 10, 2013 01:26:01)
Офлайн
Куки при редиректе устанавливаются по методу “бабушка надвое сказала”. Бывало, что что-то работает год, ничего не трогается, а потом возвращаешься к этому - и просто никак, вообще и в принципе. А у кого-то может продолжать работать.
Лучший метод, на мой взгляд - не использовать одновременно установку кукей и сервер-сайд редирект.
Второй момент - разные пути. В документации по bottle сказано, что по умолчанию будет path='/', но это не так. Нужно в данном случае явно прописывать в set_cookie (…,path='/')
Офлайн
Ок, благодарю… Буду пробовать что нить другое. О результатах отпишу.
Офлайн
Доброго времени суток.
path = ‘/’ не помогло, но проблему решил…
вместо: @bottle.get('/ajax/add_product/<product_id>/<count>')
использовал: @bottle.get('/add_product/<product_id>/<count>')
куки заработали (даже в redirect-ом)… конечно это скорее костыль, но меня устраивает (пока).
Всем большое спасибо!
Офлайн
path='/' нужно и в set_cookie и в get_cookie, и старые куки удалить
Офлайн
Ок, благодарю. Буду иметь ввиду.
Офлайн