在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python  HTML/ Django 怎么序列號(hào)數(shù)組或指定的格式

Django 怎么序列號(hào)數(shù)組或指定的格式

這樣查詢出數(shù)據(jù)

    user_add1 = UserAddress.objects.filter(id=int(add_id))

然后序列化

json_data = serializers.serialize("json", user_add1, ensure_ascii=False)

返回json

return HttpResponse(json.dumps(json_data), content_type="application/json; charset=utf-8")

前端接收到j(luò)son
怎么去掉[]括號(hào)?

[{"model": "Shopping.useraddress", "pk": 8, "fields": {"user": 3, "district": "拉數(shù)據(jù)來(lái)看考慮建立科技", "address": "考慮建立科技可立即離開(kāi)", "signer_name": "張三", "signer_mobile": "12345678901", "default_add": false, "add_time": "2018-03-29T14:32:35.552Z"}}]

前端怎么調(diào)用json
alert(data.fields.address)這樣獲取不到值

獲取編輯地址的ID然后ajax傳到后端,比如我點(diǎn)擊id=9的編輯,但是實(shí)際傳回去的是id=7,如何才能傳回不同的id了?

<a onclick="modify()" id="modify" data-id="7" ><i class="am-icon-edit"></i>編輯</a>
<a onclick="modify()" id="modify" data-id="8" ><i class="am-icon-edit"></i>編輯</a>
<a onclick="modify()" id="modify" data-id="9" ><i class="am-icon-edit"></i>編輯</a>
function like() {
      var tree = document.getElementById("delete");
      var id = (tree.getAttribute("data-id"));
      $.ajax({
         cache: false,
         type: "POST",
         url:"{% url 'address' %}",
         data:{'add_id': id, 'type': 'delete'},
         async: true,
         beforeSend:function(xhr, settings){
                 xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
                            },
                            success: function(data) {
                                if(data.status == 'success'){
                                    window.location.reload();
                                }
                        },
                    });
                }
回答
編輯回答
毀憶

首先你user_add1 = UserAddress.objects.filter(id=int(add_id))得到的是一個(gè)“array-like”的東西,就當(dāng)它是一個(gè)數(shù)組好了,你序列化之后當(dāng)然也是一個(gè)數(shù)組咯。

字面上來(lái)講,id是唯一的,因此你不應(yīng)該filter,而應(yīng)該getuser_add1 = UserAddress.objects.get(id=int(add_id)),這樣得到的就是一個(gè)UserAddress對(duì)象而不是一個(gè)數(shù)組了。這是第二個(gè)問(wèn)題。

最后一個(gè)問(wèn)題,前端獲得的是序列化之后的東西,說(shuō)白了就是字符串,你需要調(diào)用JSON.parse把這些字符串轉(zhuǎn)為JSON對(duì)象。更多詳情自行搜索JSON.parse。

然后如果你一定要用filter,去掉中括號(hào)的方法也很簡(jiǎn)單:

  1. 在序列化前將數(shù)組中的對(duì)象取出來(lái),對(duì)對(duì)象本身進(jìn)行序列化而不是對(duì)數(shù)組進(jìn)行序列化;
  2. 在序列化后通過(guò)對(duì)字符串的操作去除首尾的“[]”。

使用json.dumps代替serializers.serialize

首先你要實(shí)現(xiàn)toJSON方法,比如:

class UserAddress(model):
    ...
    def toJSON(self):
        return {
            'model': 'Shopping.useraddress',
            'pk': self.pk,
            'fields': {
                'user': 3,
                'district': self.user.district,
                'address': self.user.district,
                'signer_name': self.user.signer_name,
                'signer_mobile': self.user.signer_mobile,
                'default_add': self.user.default_add,
                'add_time': time.mktime(self.user.add_time.timetuple)
            }
        }

然后

import json

...

user_add1 = UserAddress.objects.get(id=int(add_id))

json_data = json.dumps(user_add1.toJSON())

return HttpResponse(json_data, content_type="application/json; charset=utf-8")

user_add1 = UserAddress.objects.get(id=int(add_id))

json_data = json.dumps(user_add1)

return JsonResponse(user_add1.toJSON(), safe=False)

首先html中的id必須是唯一的,不然怎么叫id?你有三個(gè)id為modifya標(biāo)簽……然后你的a標(biāo)簽的onclick調(diào)用的是modify(),而你底下給的是like()……就當(dāng)這兩個(gè)函數(shù)是一個(gè)函數(shù)好了,你like()document.getElementById的參數(shù)怎么又變成delete哈哈哈

所以你只要把id改成唯一的就行,然后通過(guò)onclick調(diào)用modify()或者說(shuō)like()時(shí),這樣會(huì)有個(gè)新的問(wèn)題:onclick調(diào)用的函數(shù)怎么知道你click了哪個(gè)元素?解決方法自行搜索“onclick 傳參”。

2017年3月13日 05:40