問題來源: 針對下拉菜單而言,如果全部有前端固定輸入,一旦系統需要修改前端字段名稱,那么我們就需要去找到對應的下拉框,修改名稱,修改后還要重新提交代碼;略微麻煩
解決辦法,用Django的models處理,把數據都寫到數據庫中,后端把數據返回給前端,前端只需要讀取數據,寫到對應的下拉菜單中即可
具體操作:
后端:
1、 先建表,想清楚數據結構,再寫接口
2、 寫一個接口,將數據返回給前端;get請求
class SearchEnvJson(APIView): def get(self, request): data = Config.objects.all() return JsonResponse(data)
自己建一個config表,非開發人員,建表比較戳,見諒;能用
id可以分大一點,這樣就可以防止突發新增內容;用value區分不同的下拉菜單,用descriptions作為option值
前端: 前端將后端提供的數據寫入到option
$.ajax({ type: "get", url: "{% url 'searchEnvApi' %}", datatype: 'json', contentType: "application/json; charset=utf-8", data: {}, success: function (data) { console.log(data); for (let i = 0; i < data.data.length; i++) { let dataTemp = data.data[i]; console.log(dataTemp); if (dataTemp.value == "env") { $("#env").append(new Option(dataTemp.descriptions)) }else if (dataTemp.value == "server") { $("#server").append(new Option(dataTemp.descriptions)) }else if (dataTemp.value=="area"){ $("#area").append(new Option(dataTemp.descriptions)) } } form.render(); } });
數據驗證:
數據正常顯示