2015-09-07 73 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 –

相關問題