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:
还有个方法,就是当用户注册的时候,将中文处转译成汉语拼音。
最终我还是使用一个中pinyin.py有代码,将接收到的用户名,直接换成了拼音的,这样其它的内容都没有作任何的修改。
https://github.com/goodspeedcheng/pinyin.py