Django在会话中仅重定向用户一次

时间:2019-02-12 19:46:55

标签: django python-3.x django-views

我只需要重定向用户一次,具体取决于用户代理。

在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_nameindex.html,否则是mobile_index.html

但是现在,如果用户设备是移动设备,则django每次都会将用户重定向到页面的移动版本。但是用户应该具有转到网站的桌面版本的能力。如何解决?

感谢您的时间和帮助。

0 个答案:

没有答案