Найти - Пользователи
Полная версия: Работа с куками в bottle
Начало » Web » Работа с куками в bottle
1
NurDus
Доброго времени суток.
Есть 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

Может кто сталкивался?!.. Заранее большое спасибо.
wbt
Куки при редиректе устанавливаются по методу “бабушка надвое сказала”. Бывало, что что-то работает год, ничего не трогается, а потом возвращаешься к этому - и просто никак, вообще и в принципе. А у кого-то может продолжать работать.

Лучший метод, на мой взгляд - не использовать одновременно установку кукей и сервер-сайд редирект.

Второй момент - разные пути. В документации по bottle сказано, что по умолчанию будет path='/', но это не так. Нужно в данном случае явно прописывать в set_cookie (…,path='/')
NurDus
Ок, благодарю… Буду пробовать что нить другое. О результатах отпишу.
NurDus
Доброго времени суток.

path = ‘/’ не помогло, но проблему решил…
вместо: @bottle.get('/ajax/add_product/<product_id>/<count>')
использовал: @bottle.get('/add_product/<product_id>/<count>')

куки заработали (даже в redirect-ом)… конечно это скорее костыль, но меня устраивает (пока).

Всем большое спасибо!
wbt
path='/' нужно и в set_cookie и в get_cookie, и старые куки удалить
NurDus
Ок, благодарю. Буду иметь ввиду.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB