Django是一個強大的Web框架,在后端開發中廣泛應用。在前后端分離的開發中,經常需要后端返回一些JSON格式的數據。本文就來介紹如何使用Django返回三級聯動的JSON數據。
三級聯動的JSON數據一般用于省市區的選擇,常用于表單的聯動選擇中。首先在Django中定義三個Model來表示省市區,代碼如下:
class Province(models.Model): name = models.CharField(max_length=50) def __str__(self): return self.name class City(models.Model): name = models.CharField(max_length=50) province = models.ForeignKey(Province, on_delete=models.CASCADE) def __str__(self): return self.name class District(models.Model): name = models.CharField(max_length=50) city = models.ForeignKey(City, on_delete=models.CASCADE) def __str__(self): return self.name
在views.py中,定義一個函數用于處理請求,并返回JSON類型的數據。需要使用Django的serializer庫來對Model進行序列化。
from django.core import serializers from django.http import HttpResponse from .models import Province, City, District def get_district(request, city_id): district_list = District.objects.filter(city=city_id) data = serializers.serialize('json', district_list) return HttpResponse(data, content_type='application/json')
接著,在前端使用ajax來請求這個URL,獲取到對應城市下的區縣數據,并將其渲染到相應的下拉框中。
function getDistrict(city_id) { $.ajax({ url: '/api/get_district/' + city_id + '/', type: 'GET', dataType: 'json', success: function(data) { $("#district").empty(); $.each(data, function(index, item) { $("#district").append(""); }); } }); }
以上就是在Django中返回三級聯動的JSON數據的過程。需要注意的是,返回的JSON數據中可能會出現中文亂碼問題,需要在HttpResponse中添加content_type參數來指定編碼類型。