Kni*_*mar 8 javascript python django unicode
我的数据中有一堆unicode字符串,我需要从django视图传递给模板,以便在JavaScript scriptlet中使用,并将其传递给Web来回.
问题是我希望字符串以JavaScript unicode形式表示,但我从python 获得带有u前缀的字符串.
例如,对于字符串mężczyźni,Python将其存储为u'm\u0119\u017cczy\u017ani',但是当它传递给模板时,它不会删除在处理它时为JavaScript创建问题的u前缀.我希望它只是'm\u0119\u017cczy\u017ani',以便模板中的JavaScript代码可以使用它.
我尝试使用urqluote,smart_unicode,force_unicode,但无法解决问题,甚至无法解决问题.
我该怎么办 ?
jpi*_*pic 12
编辑: Django 1.7+ 不再包含simplejson.代替
from django.utils import simplejson
Run Code Online (Sandbox Code Playgroud)
写
import json
Run Code Online (Sandbox Code Playgroud)
然后用json而不是simplejson.
您可能正在打印数据字典的python repr,并尝试在javascript中解析它:
{{ your_python_data }}
Run Code Online (Sandbox Code Playgroud)
相反,您可以在json中导出数据:
from django.utils import simplejson
json_data_string = simplejson.dumps(your_data)
Run Code Online (Sandbox Code Playgroud)
并直接在javascript中加载数据:
var your_data = {{ json_data_string }};
Run Code Online (Sandbox Code Playgroud)
您还可以制作模板过滤器:
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))
Run Code Online (Sandbox Code Playgroud)
在您的模板中:
{% load your_template_tags %}
{{ your_python_data|as_json }}
Run Code Online (Sandbox Code Playgroud)
请注意,您应该小心使用XSS,如果某些"数据"来自用户输入,那么您应该对其进行清理.