【发布时间】:2015-05-07 21:29:06
【问题描述】:
使用 django 1.7 和 python 2.7,在我的视图中:
page = 0
sex = [u'\u0632\u0646'] #sex = زن
url = "/result/%s/%d" % (sex, page)
return HttpResponseRedirect(url)
哪些需要返回:
/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))
但没有解决问题。
我真的很困惑,感谢您帮助解决这个问题。
【问题讨论】:
-
但似乎
sex是您模式r'^result/(?P<sex>\w+)/(?P<page>\d+)'的第二部分?关于您的url,您需要为python指定格式为unicode,您需要在您的网址url = u"/result/%s/%d" % (sex, page)的开头添加u -
或作为回报使用
unicode函数return HttpResponseRedirect(unicode(url,'escape-unicode')) -
@Kasra,
/result之后的预期第一个参数是زن,这在 url 模式中很明显。但是浏览器(和此处的文本编辑器)将0移动到زن的左侧(不知道为什么)。 -
@Kasra
return HttpResponseRedirect(unicode(url,'escape-unicode'))原因:decoding Unicode is not supported -
是的,它可以做到,尽管我的领事显示它是正确的
>>> print url /result/زن/0。 :) 抱歉解码是'unicode-escape'!但我认为这也可能与您的浏览器有关!有关更多详细信息,请查看此链接docs.djangoproject.com/en/1.7/ref/unicode/#uri-and-iri-handling
标签: django unicode python-unicode