Him*_*shu 6 django url redirect
我正在为新客户改造 Django 网络应用程序。为此,我添加了一个 url 模式,将来自新客户端的请求重定向到旧的 url 模式。
从:-
(('api/(?P<phone>\w+)/MessageA', handle_a_message),
('api/(?P<phone>\w+)/MessageB', handle_b_message),
...)
Run Code Online (Sandbox Code Playgroud)
到:-
(('api/(?P<phone>\w+)/MessageA', handle_a_message),
('api/(?P<phone>\w+)/MessageB', handle_b_message),
('api/newclient', handle_newclient)
...)
Run Code Online (Sandbox Code Playgroud)
views.handle_newclient
def handle_newclient(request):
return redirect('/api/%(phone)s/%(msg)s' % request.GET)
Run Code Online (Sandbox Code Playgroud)
这有点管用。然而,新客户端没有做那些 url 需要的基本身份验证。此外,默认输出是 json,其中新客户端需要纯文本。有没有办法在重定向到现有 url 之前调整标题?
Django FBV 应该返回一个 HTTPResponse 对象(或其子类)。Django 快捷重定向返回 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
Run Code Online (Sandbox Code Playgroud)