如何将非拉丁字符串传递给django中的url参数?

时间:2015-03-06 09:41:53

标签: django unicode python-unicode

使用django 1.7和python 2.7,在我的视图中:

page = 0
sex = [u'\u0632\u0646'] #sex = زن
url = "/result/%s/%d"  % (sex, page)
return HttpResponseRedirect(url)

哪些需要返回:

/result/زن/0

但是生成的网址结果是:

/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))

但没有解决问题。

我真的很困惑,感谢你帮忙解决这个问题。

2 个答案:

答案 0 :(得分:1)

url也应该是一个unicode字符串,以便它起作用:

page = 0
sex = u'\u0632\u0646' #sex=زن
url = u"/result/%s/%d"  % (sex, page)
return HttpResponseRedirect(url)

答案 1 :(得分:1)

由于性是一个列表,你只需要使用你想要的实际元素:

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})