django建设www和m版本网站

django一个site对应一个应用和域名,手机版再弄个应用没这个必要
有什么办法,可以提高手机版建设效率呢?

我目前的做法是,把两个域名都绑定到同一个ip,分别做电脑版、手机版的模板。
让中间件判断域名是否有m.,如果包含m.就设置一个cookie代表现在是手机访问,模板就读取手机版模板,反之读取电脑版模板

现在会出现一个问题,就是有时候缓存失效后,访问手机版首页模板是电脑版的首页。

class SubdomainMiddleware(object):
    def process_request(self, request):
        response = None
        domain_parts = request.get_host().split('.')
        if len(domain_parts) == 3 and domain_parts[0] == 'm':
            if request.COOKIES.get('themes')=='default':
                request.COOKIES['themes'] = 'mobile'
        return response

    def process_response(self, request, response):
        domain_parts = request.get_host().split('.')
        if len(domain_parts) == 3 and domain_parts[0] == 'm':
            response.set_cookie('themes', 'mobile')
        else:
            if request.COOKIES.get('themes')=='mobile':
                response.set_cookie('themes', 'default')
        return response
阅读 4.8k
3 个回答

我用的是在views中判断UA,模板我也有两套。返回数据的时候,根据UA的判断结果来决定使用哪一套模板。

我个人比较青睐的办法是 在 middleware 里面处理这个逻辑 通过ua判断 用不到半个毫秒(实测) 不需要cookie缓存. 具体的方法就很多了 比如不同的 模板目录 不同的 views 等等. 当然 如果移动版相差特别大 用 site 也是可以的。 最后 responsive design 也可以考虑.

一般都是通过UA来判断,可以看到携程等APP的内嵌webview中都是用的UA来判断的、

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进