передача строк 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, если некоторые из "данных" поступают от пользователя, то вы должны санировать его.