Django / Dajaxice和国际角色的问题

时间:2010-08-25 15:12:51

标签: python django unicode unicode-string

我在使用国际角色的Djajaxice时遇到了问题......

我有一个django模板......在该模板中是以下选择:

 <select name="region" id="id" onchange="Dajaxice.crc.regions('my_callback',{'data':this.value});">
         <option value="" selected="selected" ></option>
         {% for region in regions %}
              <option value="{{ region.region }}">{{ region.region }}</option>
         {% endfor %}
    </select>

正如你在select的onchange上看到的那样,我调用了Regions函数并传递了两个参数。回叫的名称和选定的值

这是ajax.py文件中的函数

def regions(request, data):
    CityList = City.objects.filter(region__exact=data)
    out = "".join(['<option value="%s">%s</option>' % (c.city,c.city) for c in CityList])
    return simplejson.dumps(out)

dajaxice_functions.register(regions)

这可以正常运行,并且在相关数据的情况下调用模板中的JavaScript函数,当区域名称中没有任何国际字符时没有问题。

以'安塔利亚'为例。然而,当像'Muğla'这样的地区出现时,它不起作用。在仔细检查时,变量数据包含'Mu%u011Fla',我似乎无法将其恢复到我认为必要的格式,以便Django可以正确访问模型数据。

我已经在页面顶部使用了魔术引号,我尝试过将其与data.decode('string-escape')一起使用并在utf-8和back ...之间推送它。但我尝试的似乎没有工作...

这是一个Dajaxice,Django还是python问题......还是我在这里错过了一些非常简单的东西?

我已经有两天了,试图解决这个问题......非常感谢您提供的任何帮助。

干杯

1 个答案:

答案 0 :(得分:1)

好的,修好了......

因此,对于使用Dajaxice并使用国际字符的其他人,您应该从以下内容更改Dajaxice.core.js文件中的第10行:

send_data.push( '的argv =' +逸出(JSON.stringify(argv的)));

到此:

send_data.push( '的argv =' + encodeURIComponent方法(JSON.stringify(argv的)));

并且一切正常。

实际上,两天几个小时的生活陷入了晦涩难懂的代码之中....... 帮助我们所有人!