Использование Django для передачи текста для обработки Python и возврата ответа
Я новичок в Django и борюсь с передачей данных туда и обратно. Моя песочница сейчас пытается создать быструю страницу с текстовой областью, чтобы принять введенный JSON, а затем в основном ответить обратно выводом этого ввода, проходящего через json.dumps(input, indent=4, separators=(',', ': '))
, Итак, верните тот же JSON, но напечатайте его красиво.
Кажется, что это довольно просто, если я хочу просто вернуть JSON, но я хочу встроить результат в другую HTML-страницу. Я пробовал ниже, но интервал, кажется, удаляется. Если я использую команду печати для отладки во время работы python manage.py runserver
, это все еще не ломает линии и отступы.
def pretty(request):
form = InputForm(request.POST)
if form.is_valid():
output = json.dumps(output, indent=4, separators=(',', ': '))
else:
output = "Not valid"
return render(request, 'printer/pretty.html', {'results': output})
Я также попытался использовать пользовательский фильтр, думая, что вкладки / возврат каретки будут частью results
но там тоже не повезло.
Я понимаю, что есть более подходящие подходы, чем использование Django, но это проект песочницы, который я выбрал по любой причине. Я пытаюсь понять, смогу ли я использовать Django в качестве структуры, основанной на основном выполнении пользовательского ввода против доморощенных скриптов Python и выводе результатов в браузер в рамках симпатичной панели инструментов.
Возможно ли вышеизложенное, как специфическое форматирование JSON и его возврат пользователю, а также запуск произвольных сценариев Python и отправка вывода обратно? Буду признателен за любые указания на ресурсы или другие идеи, о которых я должен подумать. Кажется, я не могу найти ничего, связанного с тем, чего я пытаюсь достичь, что заставляет меня думать, что это необычный / неправильный способ использования Django.
1 ответ
Я думаю, что проблема здесь в том, как HTML разрушает пробелы. Для меня бег json.dumps({'test_array': range(3)}, indent=4, separators=(',', ': '))
генерирует ожидаемый "симпатичный" вывод:
{
"test_array": [
0,
1,
2
]
}
Если проблема заключается в разрушении пробелов, вы можете решить их, обернув <pre>
теги вокруг вашей переменной результатов в шаблоне Django следующим образом:
<pre>{{ results }}</pre>