我正在为新客户端改造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,其中新客户端需要纯文本。有没有办法在重定向到现有网址之前调整标题?
答案 0 :(得分:3)
Django FBV应该返回一个HTTPResponse对象(或其子类)。 Django shorcut redirect返回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