2015-08-03 69 views
1

我正在爲新客戶端加裝Django Web應用程序。爲此,我添加了一個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重定向返回HTTPResponse的子類HttpResponseRedirect。這意味着我們可以設置標頭爲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 

相關的文檔herehere