假设我要在url中传递用户名:
username = '[email protected]'
因此,在网址中,如下所示:
url(r'(?P<user_name>\w+)/$', 'user_related.views.profile', name='profile'),
并在views.py中获取该用户:
def profile(request, user_name):
user = User.objects.get(username=user_name)
return render(request, 'user_profile.html', {'user':user})
但是我得到一个错误:
User matching query does not exist.
因为django自动将@
转换为%40
。如何将实际的username
传递给视图?请帮我解决这个问题。谢谢!
python大神给出的解决方案
使用标准urllib
模块中的unquote函数:
from urllib import unquote
user = User.objects.get(username=unquote(user_name))
顺便说一句,据我了解,您的url()中的正则表达式应为[\w@%.]+
。普通\w+
与[email protected]
和kakar%40gmail.com
不匹配。