【问题标题】:GAE: User By Name / Regex Expressions [duplicate]GAE:用户名称/正则表达式 [重复]
【发布时间】:2012-11-12 16:09:14
【问题描述】:

可能重复:
How to make case insensitive filter queries with Google App Engine?

目前在我的网络应用中,

如果我输入 www.website.com/Rohit ,它会将我带到我想要的个人资料页面。

但如果我输入 www.website.com/rohit ,它不会带我到那里,它会被发送到 404 错误。

基本上,我的用户名存储为:Rohit

任何给定用户的个人资料页面都应该是:www.website.com/username

但我希望网站不关心大写。

更新

感谢 Martijn,我现在知道我的正则表达式没问题。这是代码,我用来检查 Google App Engine 以查看用户名是否已存在:

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

^如何使这个大写友好(大写字母没有区别?)

【问题讨论】:

  • 该正则表达式已经匹配小写大写字母。正则表达式不是你的问题。
  • 好的,谢谢,虽然最初这是一个不同的问题,但如果问题已经在 StackOverflow 上,我想我没有像最初那样再次检查 - 最初是关于正则表达式。

标签: python regex google-app-engine web-applications web


【解决方案1】:

使用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) 调整一次运行中转换的用户数量。

【讨论】:

  • 好的,非常感谢!!我该怎么做,目前我所有的用户名都使用以下代码存储:username = db.StringProperty(required = True)
  • @RohitRayudu 请查看更新
  • 嗯..目前该网站还没有上线,所以这不是问题,有没有在用户注册时将用户名初始设置为小写?
  • 当然,每次创建新用户时只需使用user.username = name.lower() 并保存他/她的用户name
  • 好的,它成功了,谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 2011-05-11
  • 2019-08-09
相关资源
最近更新 更多