【问题标题】:How does Facebook URL regex work?Facebook URL 正则表达式如何工作?
【发布时间】:2017-07-14 20:48:02
【问题描述】:

当您在您的个人资料中时,网址是

www.facebook.com/<username>

不过也有类似的网址

www.facebook.com/support

www.facebook.com/help

为什么这不会与个人资料页面冲突?为什么应用程序不尝试查找用户supporthelp 并显示错误?

我在 Django 中工作,我可以假设这些用于支持和帮助的 URL 列在用户配置文件 URL 之前。但是,我有多个应用程序的项目,accountsadmin 等应用程序的主页也会与用户配置文件 URL 冲突,因为 URL 会像

127.0.0.1:8000/admin

127.0.0.1:8000/accounts

Django 将尝试查找用户名adminaccounts。如何以其他人试图理解我的代码可以阅读的方式解决这个问题?

【问题讨论】:

  • 试着记录下来。
  • @revo 我不明白。再来一次?

标签: regex django


【解决方案1】:

不要让用户得到这些名字,你可以创建禁止用户名功能,这样每当用户选择像管理员这样的用户名时,帐户就会给他们一个错误,让你清楚地阅读应该在forms.py中,我认为这也是facebook使用的!!

def ForbiddenUsernamesValidator(value):
    forbidden_usernames = ['admin', 'settings', 'news', 'about', 'help', 'signin', 'signup', 
        'signout', 'terms', 'privacy', 'cookie', 'new', 'login', 'logout', 'administrator', 
        'join', 'account', 'username', 'root', 'blog', 'user', 'users', 'billing', 'subscribe',
        'reviews', 'review', 'blog', 'blogs', 'edit', 'mail', 'email', 'home', 'job', 'jobs', 
        'contribute', 'newsletter', 'shop', 'profile', 'register', 'auth', 'authentication',
        'campaign', 'config', 'delete', 'remove', 'forum', 'forums', 'download', 'downloads', 
        'contact', 'blogs', 'feed', 'faq', 'intranet', 'log', 'registration', 'search', 
        'explore', 'rss', 'support', 'status', 'static', 'media', 'setting', 'css', 'js',
        'follow', 'activity', 'library']
    if value.lower() in forbidden_usernames:
        raise ValidationError('This is a reserved word.')

【讨论】:

  • 我想我没有清楚地解释我的问题。即使用户没有admin 作为他的用户名,在加载例如www.mysite.com/admin,Django 认为我正在尝试加载名为 admin 的用户的个人资料页面。所以在这种情况下,我无法进入管理面板,因为 Django 将加载 Profile 视图而不是加载管理后端页面。当 URL 正则表达式与配置文件页面的 URL 明确匹配时,我如何告诉 Django 不要加载用户配置文件页面,即url(r'^(?P&lt;username&gt;\w+)/$',),
  • 确保您最不明确的正则表达式是列表中最新的,它会首先尝试匹配确切的 URL,如果它不匹配任何一个,它将继续使用您的用户名网址
猜你喜欢
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 2011-10-30
  • 2010-09-29
相关资源
最近更新 更多