2015-09-07 37 views
1

在web2py中工作,试图重新设计我的网站更加移动友好。在Chrome中使用用户代理切换器(经过验证与来自移动设备的返回不同格式的其他几个网页进行了验证),但是在测试期间在我的网站上使用了web2py的书中推荐的内容,上班。if request.user_agent()。is_mobile:response.view.replace('。html','。mobile.html')似乎没有任何影响

的下面是在default.py每个函数被调用(指数,约,接触等)

if request.user_agent().is_mobile: 
    response.view.replace('.html','.mobile.html') 

此外,我有index.mobile.html,about.mobile.html等类似命名的视图可以滚动。它们都在扩展layout.mobile.html,它被修改为使用与layout.html不同的css文件(用于非移动web浏览器)。

也许我做了这件事比它需要的更复杂,但我对web2py和一般的web开发并不熟悉,并且试图拼凑出一些需要做的事情,以使我的网站变得友好Google的眼睛(尽管我的网站在任何比旧翻盖手机都大的东西上看起来都不错)。

建议,将不胜感激。我累了,感到困惑,现在去睡觉,试图在早上再次解决这个问题。预先感谢任何能够提供一些见解的人。

更新9/8: 检查正在返回的用户代理程序,发现我添加到Chrome的用户代理欺骗并不是欺骗Python。有趣的是,它注意到它与多个实时网站一起工作,所以我不确定那里的交易。我认为不同时间的信息。

在我的手机中添加了调试工具来查看页面源代码,发现我的手机触发了is_mobile为True,但仍然返回标准index.html页面,而不是index.mobile.html(如不具有页内施加的mobileStyles.css,如index.mobile.html延伸layout.mobile.html,其具有不同的CSS文件)

从打印语句为用户代理:

<Storage {'is_mobile': True, 'is_tablet': False, 'os': <Storage {'name': 'Linux'}>, 'dist': <Storage {'version': '5.1.1', 'name': 'Android'}>, 'browser': <Storage {'version': '44.0.2403.117', 'name': 'Chrome'}>}> 

此前,当我的笔记本电脑浏览器上使用用户代理欺骗时,它返回:

<Storage {'os': <Storage {'name': 'Linux'}>, 'is_tablet': False, 'is_mobile': False, 'browser': <Storage {'version': '45.0.2454.85', 'name': 'Chrome'}>}> 

我现在感到非常困惑。

+0

一些进一步的诊断将有所帮助。例如,移动用户代理是否具有上述“真”条件(您可以通过打印语句或通过写入视图来检查)?如果不是,确切的用户代理字符串是什么(在'request.env.http_user_agent'中找到)? – Anthony

回答

1

值得注意的是,上面的代码仍然失败,并且我已验证我实际上是在True条件下输入if语句,并且从我的手机访问该页面会触发True条件。我还是想知道为什么它的失败,但是,我没有找到一个解决办法:

if request.user_agent().is_mobile: 
    response.view = 'default/index.mobile.html' 

的缺点是我不得不稍微定制代码中的每个功能。好处是它的工作。如果有人有更好的想法,我很乐意听到它。主要是因为这让我很烦恼,书中的例子似乎并不奏效,我想知道我做错了什么。

谢谢!

+0

Mike,您是否在web2py-users google group上提问过这个问题?他们对回应非常好。以下是链接:https://groups.google.com/forum/#!forum/web2py –

相关问题