передача строк unicode из django в javascript
У меня есть куча строк unicode в моих данных, которые мне нужно передать из моего представления django в шаблон для использования в Скриптлете JavaScript, который передает его в интернет туда и обратно.
проблема в том, что я хочу, чтобы строки были представлены в форме JavaScript unicode, но я получаю строки с u префикс из python.
например, для строки mężczyźni, Python хранит его как у меняu0119\u017cczy u017ani' но когда он передается шаблону, это не удалить u префикс, который создает проблемы для JavaScript при его обработке. Я хочу, чтобы это было просто 'mu0119u017cczyu017ani' чтобы код JavaScript в шаблоне мог его использовать.
Я попытался использовать urqluote, smart_unicode, force_unicode, но не смог найти решение или даже взломать.
Что мне делать ?
1 ответов
Edit: Django 1.7+больше не включает пакет. Вместо
from django.utils import simplejson
написать
import json
и затем использовать json
вместо simplejson
.
вы, вероятно, печатаете Python repr ваших данных dict и пытаетесь разобрать его на javascript:
{{ your_python_data }}
вместо этого вы можете экспортировать свои данные в json:
from django.utils import simplejson
json_data_string = simplejson.dumps(your_data)
и загрузите данные непосредственно в javascript:
var your_data = {{ json_data_string }};
можно сделать фильтр шаблон:
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, если некоторые из "данных" поступают от пользователя, то вы должны санировать его.