我只需要重定向用户一次,具体取决于用户代理。
在middleware.py中,我有:
class UserAgentDetectMiddleware(object):
def __init__(self, get_response=None):
if get_response is not None:
self.get_response = get_response
def __call__(self, request):
self.process_request(request)
return self.get_response(request)
def process_request(self, request):
request.user_agent = SimpleLazyObject(lambda: get_user_agent(request))
if request.user_agent.is_pc:
request.template_prefix = ''
else:
request.template_prefix = 'mobile_'
在views.py中:
class UserAgentIndexView(TemplateView):
template_name = 'index.html'
def get_template_names(self):
try:
template_name = os.path.join(self.request.template_prefix + 'index.html')
except TemplateDoesNotExist:
template_name = 'index.html'
return [template_name]
def get_context_data(self, **kwargs):
...
def render_to_response(self, context, **response_kwargs):
...
因此,如果用户设备是PC,则template_name
是index.html
,否则是mobile_index.html
。
但是现在,如果用户设备是移动设备,则django每次都会将用户重定向到页面的移动版本。但是用户应该具有转到网站的桌面版本的能力。如何解决?
感谢您的时间和帮助。