我的数据中有一堆unicode字符串,我需要从我的django视图传递到模板,以便在JavaScript scriptlet中使用它来回传递给web。
问题是我希望字符串以JavaScript unicode形式表示,但我从python获得带有 u 前缀的字符串。
例如,对于字符串mężczyźni,Python将其存储为 u'm \ u0119 \ u017cczy \ u017ani',但是当它传递给模板时,它< em>不删除 u 前缀,这会在处理JavaScript时为JavaScript带来问题。我希望它只是'm \ u0119 \ u017cczy \ u017ani',以便模板中的JavaScript代码可以使用它。
我尝试过使用urqluote,smart_unicode,force_unicode,但无法解决问题,甚至无法解决问题。
我该怎么办?
答案 0 :(得分:12)
编辑: Django 1.7 + no longer includes simplejson。而不是
from django.utils import simplejson
写
import json
然后使用json
代替simplejson
。
您可能正在打印数据字典的python repr,并尝试在javascript中解析它:
{{ your_python_data }}
相反,您可以在json中导出数据:
from django.utils import simplejson
json_data_string = simplejson.dumps(your_data)
直接在javascript中加载数据:
var your_data = {{ json_data_string }};
您还可以制作template filter:
from django.utils import simplejson
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
@register.filter
def as_json(data):
return mark_safe(simplejson.dumps(data))
在你的模板中:
{% load your_template_tags %}
{{ your_python_data|as_json }}
请注意,您应该小心使用XSS,如果某些“数据”来自用户输入,那么您应该对其进行清理。