假设我想在 url 中传递用户名:
username = 'kakar@gmail.com'
所以在 url 中,它是这样的:
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
传递给 View ?请帮我解决这个问题。谢谢!
最佳答案
使用unquote来自标准 urllib
模块的函数:
from urllib import unquote
user = User.objects.get(username=unquote(user_name))
顺便说一句,据我所知,您的 url() 中的正则表达式应该是 [\w@%.]+
。普通 \w+
不匹配 kakar@gmail.com
和 kakar%40gmail.com
。
关于python - 如何在 django 的 url 中传递特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27958732/