2012-01-05 4 views
8

В конфигурационном файле:Pyramid: как настроить cookie без рендера?

config.add_route('lang', '/lang-{code}') 

В просмотров:

@view_config(route_name='lang') 
def lang(request): 
    code = request.matchdict['code'] 
    response = Response() 
    response.set_cookie('lang', value=code, max_age=31536000) # max_age = year 

    return HTTPFound(location=request.environ['HTTP_REFERER']) 

Механизм прост: есть упавший вниз пункт меню с языками и нажав на тех, кто должен обновить сайт с новой местности.

Работает без ошибок, но нет настроек cookie ... Что я сделал не так?

Спасибо!

ответ

9

HTTPFound принимает параметр заголовков. Попробуйте что-нибудь вроде return HTTPFound(location='foo', headers=response.headers)

+0

Да, это так. Большое спасибо! Я видел это в документации, но забыл ... –

12

This answer отлично. Другим вариантом является использование экземпляра HTTPFound как Response:

@view_config(route_name='lang') 
def lang(request): 
    code = request.matchdict['code'] 
    response = HTTPFound(location=request.environ['HTTP_REFERER']) 
    response.set_cookie('lang', value=code, max_age=31536000) # max_age = year 

    return response 
0

Набор печенья с помощью render_to_response

@view_config(route_name='index') 
def index_view(request): 
    lang = 'bn' 
    template = '../templates/index.jinja2' 
    request.response.set_cookie('lang', lang) 
    return render_to_response(template, {'user_id':user_id}, request=request) 
Смежные вопросы