使用Django传递文本以进行Python处理并返回响应

时间:2016-03-04 17:29:55

标签: python json django text-parsing

我是Django的新手并且在来回传递数据方面苦苦挣扎。我的沙箱现在正试图创建一个带有textarea的快速页面来获取输入的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 个答案:

答案 0 :(得分:0)

I think the issue here is with how HTML collapses whitespace. For me, running json.dumps({'test_array': range(3)}, indent=4, separators=(',', ': ')) generates the expected "pretty" output:

{
    "test_array": [
        0,
        1,
        2
    ]
}

If collapsing whitespace is indeed your issue, you can resolve it by wrapping <pre> tags around your results variable in the Django template like so:

<pre>{{ results }}</pre>