Использование 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>
Другие вопросы по тегам