2012-11-24 137 views
2

可能重複:
How to make case insensitive filter queries with Google App Engine?GAE:用戶通過名稱/正則表達式的表達式

目前我的web應用程序,

如果我在www.website.com/Rohit型,它會將我帶到我想要的個人資料頁面。

但是,如果我輸入www.website.com/rohit,它不會把我帶到那裏,它會發送到404錯誤。

基本上,我的用戶名被存儲爲:羅希特

而且任何給定用戶的個人資料頁面應該是:www.website.com/username

但我想要的網站不計較首都。

UPDATE

我現在知道了,感謝馬亭,我的正則表達式的表達就可以了。這是代碼,我用它來檢查谷歌應用程序引擎,看看用戶名已經存在或不:

u = User.all().filter('username =', username).get() 

^如何使這個首都友好(大寫字母不有所作爲?)

+6

該正則表達式已經匹配較低的*和*大寫字母。正則表達式是*不是你的問題。 –

+0

好的,謝謝。 :) –

+0

好的,謝謝,原來這是一個不同的問題,但我想我沒有再次檢查,就像我最初的問題,如果問題已經在StackOverflow - 最初是關於正則表達式。 –

回答

2

使用filter('username =', username.lower())預先轉換爲小寫。

,你需要轉換數據庫,改變所有用戶名小寫還有:

users = User.all().fetch(1000000) 
for user in users : 
    if user.username != user.username.lower() : 
     user.username = user.username.lower() 
     user.put() # save back to db only if changed 

您可以從交互式控制檯運行它,使用fetch(offset,count)的用戶轉換的一個運行調整用量。

+1

好的,非常感謝!我如何做到這一點,目前我所有的用戶名都存儲在以下代碼: username = db.StringProperty(required = True) –

+0

@RohitRayudu請參閱更新,請 – lenik

+0

嗯..目前該網站是不活的,所以這不是問題,無論如何,當用戶註冊時最初將用戶名設置爲小寫? –