如何将非拉丁字符串传递给 Django 中的 url 参数?
How to pass non-latin string to url parameter in django?
使用 django 1.7 和 python 2.7,在我的观点中:
page = 0
sex = [u'\u0632\u0646'] #sex = زن
url = "/result/%s/%d" % (sex, page)
return HttpResponseRedirect(url)
需要return:
/result/زن/0
然而结果 url 结果是:
/result/[u'\u0632\u0646']/0
这不是模式中设想的:
`url(r'^result/(?P<sex>\w+)/(?P<page>\d+)','userprofile.views.profile_search_result')`,
我也试过了
return HttpResponseRedirect( iri_to_uri(url))
但没有解决问题。
我真的很困惑,感谢你帮助解决这个问题。
url
也应该是一个 unicode 字符串才能工作:
page = 0
sex = u'\u0632\u0646' #sex=زن
url = u"/result/%s/%d" % (sex, page)
return HttpResponseRedirect(url)
由于 sex 是一个列表,您只需使用您想要的实际元素:
url = "/result/%s/%d" % (sex[0], page)
虽然请注意,要在 Django 中构建 URL,您确实应该使用 reverse
函数:
from django.core.urlresolvers import reverse
...
url = reverse('userprofile.views.profile_search_result', kwargs={'sex': sex[0], 'page': page})
使用 django 1.7 和 python 2.7,在我的观点中:
page = 0
sex = [u'\u0632\u0646'] #sex = زن
url = "/result/%s/%d" % (sex, page)
return HttpResponseRedirect(url)
需要return:
/result/زن/0
然而结果 url 结果是:
/result/[u'\u0632\u0646']/0
这不是模式中设想的:
`url(r'^result/(?P<sex>\w+)/(?P<page>\d+)','userprofile.views.profile_search_result')`,
我也试过了
return HttpResponseRedirect( iri_to_uri(url))
但没有解决问题。
我真的很困惑,感谢你帮助解决这个问题。
url
也应该是一个 unicode 字符串才能工作:
page = 0
sex = u'\u0632\u0646' #sex=زن
url = u"/result/%s/%d" % (sex, page)
return HttpResponseRedirect(url)
由于 sex 是一个列表,您只需使用您想要的实际元素:
url = "/result/%s/%d" % (sex[0], page)
虽然请注意,要在 Django 中构建 URL,您确实应该使用 reverse
函数:
from django.core.urlresolvers import reverse
...
url = reverse('userprofile.views.profile_search_result', kwargs={'sex': sex[0], 'page': page})