Kak*_*kar 2 python django django-urls
假设我想在url中传递用户名:
username = 'kakar@gmail.com'
Run Code Online (Sandbox Code Playgroud)
所以在网址中,它是这样的:
url(r'(?P<user_name>\w+)/$', 'user_related.views.profile', name='profile'),
Run Code Online (Sandbox Code Playgroud)
并在views.py中获取该用户:
def profile(request, user_name):
user = User.objects.get(username=user_name)
return render(request, 'user_profile.html', {'user':user})
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
User matching query does not exist.
Run Code Online (Sandbox Code Playgroud)
因为django会自动转换@成%40.如何将实际传递username给视图?请帮我解决这个问题.谢谢!
使用标准模块中的unquote函数urllib:
from urllib import unquote
user = User.objects.get(username=unquote(user_name))
Run Code Online (Sandbox Code Playgroud)
顺便说一句,据我所知,url()中的正则表达式应该是[\w@%.]+.平原\w+不匹配kakar@gmail.com和kakar%40gmail.com.