python - 如何在 django 的 url 中传递特殊字符

标签 python django django-urls

假设我想在 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.comkakar%40gmail.com

关于python - 如何在 django 的 url 中传递特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27958732/

相关文章:

python - 时间这样写怎么写

python - Pandas Group 然后滚动和求和得到错误的结果

Django表单上传request.files为空

sql - 如何让 Django QuerySet 'exclude' 正常工作?

python - Pytorch:运行时错误:reduce 同步失败:cudaErrorAssert:设备端断言已触发

python - 您会为 python 推荐哪个 gps 库?

用于覆盖模型的 Django 设计模式

python - URLS.py 的 pybbm 错误

python - django-registration-redux - NoReverseMatch 在/accounts/register/

python - 注销后django重定向到主页