2015-08-03 3 views
1

Я обновляю веб-приложение Django для нового клиента. С этой целью я добавил шаблон url, который перенаправляет запросы от нового клиента к старым шаблонам url.Добавить заголовок запроса перед перенаправлением

из: -

(('api/(?P<phone>\w+)/MessageA', handle_a_message), 
('api/(?P<phone>\w+)/MessageB', handle_b_message), 
    ...) 

к: -

(('api/(?P<phone>\w+)/MessageA', handle_a_message), 
('api/(?P<phone>\w+)/MessageB', handle_b_message), 
('api/newclient', handle_newclient) 
    ...) 

views.handle_newclient

def handle_newclient(request): 
    return redirect('/api/%(phone)s/%(msg)s' % request.GET) 

Это несколько работ. Однако новый клиент не выполняет базовую аутентификацию, которая нужна этим url. Также выход по умолчанию - json, где новому клиенту нужен простой текст. Есть ли способ, который я могу настроить заголовки, прежде чем перенаправить на существующий URL?

ответ

2

Django FBV должен возвращать объект HTTPResponse (или его подкласс). Перенаправление Django shorcut возвращает HttpResponseRedirect, который является подклассом HTTPResponse. Это означает, что мы можем установить заголовки для redirect(), как мы будем устанавливать заголовки для типичного объекта HTTPResponse. Мы можем сделать это следующим образом:

def my_view(request): 
    response = redirect('http://www.gamefaqs.com') 
    # Set 'Test' header and then delete 
    response['Test'] = 'Test' 
    del response['Test'] 
    # Set 'Test Header' header 
    response['Test Header'] = 'Test Header' 
    return response 

Соответствующие документы here и here.

Смежные вопросы