Я думаю, що проблема заплуталася щодо того, що ви хочете. Думаю, ви насправді не намагаєтесь вставити HTML у відповідь JSON, а хочете альтернативно повернути HTML або JSON.
По-перше, вам потрібно зрозуміти суть різниці між ними. HTML - це презентаційний формат. Він більше стосується способу відображення даних, ніж самих даних. JSON - це навпаки. Це чисті дані - в основному представлення JavaScript певного набору даних Python (у даному випадку), який у вас є. Він виконує функцію просто обмінного шару, дозволяючи переміщати дані з однієї області програми (подання) в іншу область програми (ваш JavaScript), яка зазвичай не має доступу один до одного.
Маючи це на увазі, ви не "візуалізуєте" JSON, і тут не задіяні шаблони. Ви просто перетворюєте будь-які дані, що відтворюються (швидше за все, те, що ви передаєте як контекст до вашого шаблону), у JSON. Що можна зробити або за допомогою бібліотеки JSON від Django (simplejson), якщо це дані вільної форми, або її серіалізаційну структуру, якщо це набір запитів.
simplejson
from django.utils import simplejson
some_data_to_dump = {
'some_var_1': 'foo',
'some_var_2': 'bar',
}
data = simplejson.dumps(some_data_to_dump)
Серіалізація
from django.core import serializers
foos = Foo.objects.all()
data = serializers.serialize('json', foos)
У будь-якому випадку, ви потім передаєте ці дані у відповідь:
return HttpResponse(data, content_type='application/json')
[Редагувати] У Django 1.6 та попередніх версіях код для відповіді був
return HttpResponse(data, mimetype='application/json')
[ РЕДАКТУВАТИ ]: simplejson було видалено з django , ви можете використовувати:
import json
json.dumps({"foo": "bar"})
Або ви можете скористатися django.core.serializers
описаним вище способом.