【问题标题】:Problem with Django/Dajaxice and international charactersDjango/Dajaxice 和国际字符的问题
【发布时间】:2010-08-25 15:12:50
【问题描述】:

我在使用带有国际字符的 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 中看到的那样,我正在调用 region 函数并向其传递两个参数。回调的名称和选择的值

这里是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 和返回之间..但我没有尝试似乎工作...

这是一个 Dajaxice、Django 或 python 问题...还是我在这里遗漏了一些非常简单的东西?

我已经做了两天了,试图弄清楚这一点....非常感谢您提供的任何帮助。

干杯

【问题讨论】:

  • 该字符串在数据库中是否正确,并且在您获取它以呈现时发生更改,或者它在数据库中也以相同的扭曲形式发生变化?
  • 数据库中的字符串正常。我通过视图定义将它从数据库中取出...我将它粘贴在上面的选择中,然后选择它并调用 onchange...它通过一些 Dajaxice 代码传递给 ajax.py 中的函数。我不确定这是否在离开选择时或何时被扭曲。不匹配数据库,拉取区域城市记录的原因是它的失真。
  • 如果我将变量按原样传递给 javascript 函数并在警报中取消转义,那很好。但我不想这样做,因为我需要它在 ajax.py 方法中很好,以便我可以用它提取数据库记录......

标签: python django unicode unicode-string


【解决方案1】:

好的,解决了这个问题...

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

send_data.push('argv='+escape(JSON.stringify(argv)));

到这里:

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

一切正常。

两天零几个小时的生命滑入了代码的浑水...... 帮助我们所有人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 2010-11-07
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多