1. 程式人生 > 其它 >Django中templates用Ajax接收json資料用html展示

Django中templates用Ajax接收json資料用html展示

技術標籤:pythondjango

我這裡用Ajax接收資料展示

views

def index(request):
    if request.method =='POST':
        deploy = DeployInfoHelper(admin_ip, admin_port, admin_dbname, admin_dbuser, admin_dbpassword)
        json_info = deploy.get_deploy_info()
        return HttpResponse(json.dumps(json_info), content_type=
"application/json") return render(request,'deploy_info.html')

注意
HttpResponse與JsonResponse都是django中後臺給前臺返回資料的方法,
並且他們最後走的都是http協議
不同的方法還是有點區別的,我們後臺給前臺返回資料的時候需要通過json格式的字串進行傳輸,因為前後臺都有對json格式字串進行操作的方式
他們的區別就是HttpResponse需要我們自己前後臺進行序列化與反序列化
而JsonResponse則把序列化和反序列化封裝了起來,我們直接傳入可序列化的字串,在前臺就能收到對應的資料

return JsonResponse(json_info,safe=False)

這裡需要加一個False,不然有問題

template

<body>
<dev id="table"></dev>
    <script src="https://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script>
        $.ajax({
            url:"/",
            type:
"POST", dataType: "json", success:function (ret) { console.log(ret) let htm = ""; htm += "<table class=\"deploy_info\" border=\"1px\" width=\"100%\">\n" + "<tr>\n" + "\t<td id=\"deploy_id\">id</td>\n" + "\t<td id=\"deploy_date\">上線日期</td>\n" + "\t<td id=\"deploy_real_date\">上線實際日期</td>\n" + "\t<td id=\"deploy_project\">上線專案</td>\n" + "\t<td id=\"deploy_project_detail\">上線專案詳細內容</td>\n" + "\t<td id=\"deploy_version\">上線版本</td>\n" + "\t<td id=\"deploy_result\">上線結果</td>\n" + "\t<td id=\"deploy_dev\">開發人員</td>\n" + "\t<td id=\"deploy_test\">測試人員</td>\n" + "\t<td id=\"deploy_ops\">運維人員</td>\n" + " <td id=\"deploy_remark\">備註</td>"; for (let i = 0; i < ret.length; i++) { htm += '<tr><td>'+ret[i]['id']+'</td>' + '<td>'+ret[i]['deploy_date']+'</td>' + '<td>'+ret[i]['deploy_real_date']+'</td>' + '<td>'+ret[i]['deploy_project']+'</td>' + '<td>'+ret[i]['deploy_project_detail']+'</td>' + '<td>'+ret[i]['deploy_version']+'</td>' + '<td>'+ret[i]['deploy_result']+'</td>' + '<td>'+ret[i]['deploy_dev']+'</td>' + '<td>'+ret[i]['deploy_test']+'</td>' + '<td>'+ret[i]['deploy_ops']+'</td>' + '<td>'+ret[i]['remarks']+'</td>'; } htm += '</tr></table>'; $('#table').append(htm) } })
</script> </body>

大概解釋一下Ajax前面一樣的,就是ret這個是從後端返回的json資料,寫到console.log,我們可以在瀏覽器裡看從後端是否接收過來
然後就是自己拼html表格了.這個就考驗html,css,jquery這些了,這些前端技能,我的水平很LOW
網上有那些可以幫你生成表格模板的網站
最後給一個完成的樣子

在這裡插入圖片描述