如何将非拉丁字符串传递给 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})