如何将Django userena的以用户名为URL改成以ID为URL?

Django Userena这个应用挺完善的,但对于中文来说,就是不是太友好了,默认情况下,用户名只能使用字母,数字及下划线,虽然可以修改一下表单限制,改成可以使用中文名,但注册之后,URL都是以用户名来进行参数传送的,如:

...

# Change email and confirm it
    url(r'^(?P<username>[\.\w-]+)/email/$',
       userena_views.email_change,
       name='userena_email_change'),
    url(r'^(?P<username>[\.\w-]+)/email/complete/$',
       userena_views.direct_to_user_template,
       {'template_name': 'userena/email_change_complete.html'},
       name='userena_email_change_complete'),
    url(r'^(?P<username>[\.\w-]+)/confirm-email/complete/$',
       userena_views.direct_to_user_template,
       {'template_name': 'userena/email_confirm_complete.html'},
       name='userena_email_confirm_complete'),
...

我想可以有两个方式来处理这个问题:

  • 保留以用户名的URL,但在views中,是不是要将相应的中文进行解析才行?

  • User.id来替换掉User.username,这样的话,除了URL需要改,每个Views都需要改,感觉工作量又有些大。

大家有什么好的点处理办法没有呢,或者你在处理过这问题问题,能否看看你的代码?

Update:

还有个方法,就是当用户注册的时候,将中文处转译成汉语拼音。

阅读 4.7k
2 个回答

在国内用中文用户名来做个人页面的URL参数还是挺有好的。
我用的是django 1.8, 直接models里面coding:ctf-8, urls里面(?P<fullname>\w+),也可以用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进