Django 序列化 前端通過ajax來獲取數據庫中的數據


前端通過ajax來獲取數據庫中的數據

1、實現方式一(不用,只參考)

在后台通過獲取數據並自己格式化成html數據全部發給前端

# views.py

def get_data(request):
    user_list = models.UserInfo.objects.all()
    return render(request, 'get_data.html', {'user_list':user_list})
# 獲取數據的前端頁面 index.html
<h1>用戶列表</h1>
<table id='tb'></table>

<script src='/statics/jquery.js'></script>

<script>
  $(function{
    initData()
  });
  function initData(){
    $.ajax({
      url: '/get_data.html'
      type: 'GET',
      success: function(arg){
          $('#tb').append(arg);
        }
    })

  }
<script>
# get_data.html

{% for row in user_list %}
        <tr>
           <td>{{ row.id }}</td>
       <td>{{ row.username }}</td>
     </tr>
{% endfor %}

 2、實現方法二

在后台通過只獲取數據發給前端,由前端生成相應的html來存放數據

# views.py
from django.core imports serializers  可將對象序列化為符串
def get_data(request):
  ret = {'status':True, 'data':None}
  try:   # 1
    user_list
= models.UserInfo.objects.all()  # 這時是個QuerySet,里邊是一個一個對象,無法json.dumps()
    ret['data'] = serializers.serialize('json',user_list)  # 將QuerySet對象序列化為json格式的字符串

    # 2
    # user_list = models.UserInfo.objects.all().values('id','username') #
這時是個QuerySet,里邊是一個一個字典
    # ret['data']= list(userlist)  # 用list將最外層的QuerySet轉為列表,就可json.dumps()

    # 3
# user_list = models.UserInfo.objects.all().values_list('id','username') #這時是個QuerySet,里邊是一個一個元組
  # ret['data']= list(userlist)  # 用list將最外層的QuerySet轉為列表,就可json.dumps()
    except Exception as e:
    ret['data'] = False
return HttpResponse(json.dumps(ret))
# 獲取數據的前端頁面 index.html
<h1>用戶列表</h1>
<table id='tb'></table>

<script src='/statics/jquery.js'></script>

<script>
  $(function{
    initData()
  });
  function initData(){
    $.ajax({
      url: '/get_data.html'
      type: 'GET',
      dataType:'JSON'       success: function(arg){           if(arg.status){
            // 此時arg.data是個字符串
            v = JSON.parse(arg.data) //再將json字符串轉為json對象
            //通過for循環取里里面的數據生成html...
            }
        }     })   } <script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM