日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Django實(shí)現(xiàn)列表頁(yè)商品數(shù)據(jù)返回教程

瀏覽:43日期:2024-10-12 08:14:38

采用的是cbv方式,cbv就是在url中一個(gè)路徑對(duì)應(yīng)一個(gè)類(lèi)

rom django.views.generic import Viewfrom goods.models import Goods class GoodsListView(View):''' 通過(guò)django的view實(shí)現(xiàn)商品列表頁(yè) :param request: :return: ''' def get(self,request): #重寫(xiě)View中的get方法 goods_list = Goods.objects.all()[:10] #返回前所有商品的前10條數(shù)據(jù) json_list = [] for goods in goods_list: json_item = {} json_item['name'] = goods.name json_item['market_price'] = goods.market_price json_item['sold_num'] = goods.sold_num json_list.append(json_item) from django.http import HttpResponse import json content = json.dumps(json_list) #將JSON格式轉(zhuǎn)成python字符串 return HttpResponse(content,'application/json')

在urls.py文件中配置函數(shù)對(duì)應(yīng)的路由

from goods.views_base import GoodsListView urlpatterns = [''' #商品列表的路由 url(r’^goods/$’,GoodsListView.as_view(),name='goods_list')''']

接下來(lái)我們就可以通過(guò)url看到返回的數(shù)據(jù)信息了

Django實(shí)現(xiàn)列表頁(yè)商品數(shù)據(jù)返回教程

補(bǔ)充知識(shí):django通過(guò)ajax請(qǐng)求接口返回多條數(shù)據(jù),并動(dòng)態(tài)生成表格,請(qǐng)求表單后將表格數(shù)據(jù)并入庫(kù)

一、最近在做接口相關(guān)的開(kāi)發(fā),需求是這樣的,通過(guò)一個(gè)接口所需要傳遞的參數(shù),調(diào)用接口后,處理接口響應(yīng)的參數(shù),返回多條數(shù)據(jù),并動(dòng)態(tài)生成表格,請(qǐng)求表單后將表格的數(shù)據(jù)入庫(kù),下面是我改過(guò)的代碼,跟實(shí)際代碼有些出入,但都是差不多的,只是命名相關(guān)的改了一下,第三方接口的代碼下面不會(huì)公布出來(lái),請(qǐng)見(jiàn)諒!

二、其中界面很簡(jiǎn)單,就一個(gè)文本輸入框,輸入關(guān)鍵字,一個(gè)查詢(xún)按鈕,點(diǎn)擊的時(shí)候觸發(fā)js事件,并通過(guò)ajax請(qǐng)求,還有一個(gè)暫時(shí)沒(méi)有數(shù)據(jù)的表格,查詢(xún)后動(dòng)態(tài)生成的數(shù)據(jù),操作只有一個(gè)移除功能,可以移除這條表格的數(shù)據(jù),保存后入庫(kù),這里只貼主要代碼,這里主要通過(guò)關(guān)鍵字來(lái)查找某個(gè)組group的用戶(hù)信息,具體操作需根據(jù)實(shí)際業(yè)務(wù)情況:

(1)、html頁(yè)面代碼如下:

<form method='post' action='{% url ’user:user_info_add’ %}'>{% csrf_token %}<div><input name='key_words' type='text'><a οnclick='query({{ user_id }})'>查詢(xún)</a></div><table><thead><tr><th>姓名</th><th>身份證號(hào)</th><th>手機(jī)號(hào)</th><th>操作</th></tr></thead><tbody id='user_info'></tbody></table><button type='submit'>保存</button>

(2)、js事件代碼如下:

<script type='text/javascript'> function query(user_id){ var key_words= $(’#key_words’).val() $.ajax({type: 'post',url: '{% url ’user:user_query_info’ %}',dataType: 'json',data: JSON.stringify({user_id: user_id, key_words: key_words}),success: function (data) { for (var i = 0; i < data.length; i++) { $(’#user_info’).append('<tr id=’row'+i+'’><input type=’hidden’ name=’row'+ i +'’ value=’'+i+'’><td>'+ data[i][’name’] + '</td><input type=’hidden’ name=’name'+ i +'’ value=’'+data[i][’name’]+'’><td>'+ data[i][’id_no’] + '</td><input type=’hidden’ name=’id_no'+ i +'’ value=’'+data[i][’id_no’]+'’><td>' + data[i][’mobile_no’]+'</td><input type=’hidden’ name=’mobile_no'+ i +'’ value=’'+data[i][’mobile_no’]+'’><td><a οnclick=’remove('+i+')’>移除</a></td></tr>') }} }); } function remove(i) { $(’#row’+i).remove() } </script>

(3)、其中點(diǎn)擊查詢(xún)來(lái)請(qǐng)求接口,這里django底下的url為user:user_query_info,其中view底下便是查詢(xún)所需數(shù)據(jù),并調(diào)用接口UserInfoSearch,這個(gè)封裝的接口便不提供了,就是封裝參數(shù)請(qǐng)求過(guò)去而已,返回響應(yīng)的數(shù)據(jù)動(dòng)態(tài)生成表格,主要代碼如下:

from django.views.decorators.csrf import csrf_exemptfrom django.http import JsonResponsefrom json import loadsfrom user.models.user_model import Userfrom interface.models import UserInfoSearch class QueryUserInfo(View): ''' 查詢(xún)用戶(hù)信息 ''' def post(self, request): # 獲取ajax請(qǐng)求過(guò)來(lái)的data數(shù)據(jù) for key in request.POST: keydict = eval(key) user_id = int(keydict['user_id']) user_name = str(keydict['user_name']) # 獲取用戶(hù)相關(guān)的數(shù)據(jù)庫(kù)數(shù)據(jù),供接口使用 user_object = User.objects.get(id=user_id) group_id = user_object.group_id query_id = user_object.query_id # 請(qǐng)求搜索用戶(hù)信息接口 user_info_data = loads(UserInfoSearch.get( self, request, query_id, group_id, user_name).content) user_info_data = loads(user_info_data) # 返回成功進(jìn)行操作,取出相關(guān)數(shù)據(jù),并封裝進(jìn)user_info_list這個(gè)列表當(dāng)中,返回一個(gè)JsonResponse對(duì)象,通過(guò)返回的數(shù)據(jù)動(dòng)態(tài)生成表格 if user_info_data[’code’] == 0: print(user_info_data) user_data = user_info_data[’data’] user_info_list = [] for user in user_data:user_list = user[’userList’]for list in user_list: user_dict = {} user_dict[’name’] = list[’name’] for info_list in list[’infoList’]: user_dict[’id_no’] = info_list[’id_no’] user_dict[’mobile_no’] = info_list[’mobile_no’] user_info_list.append(user_dict) print(user_info_list) else: user_info_list = [] return JsonResponse(user_info_list, safe=False) @csrf_exempt def dispatch(self, *args, **kwargs): return super(QueryUserInfo, self).dispatch(*args, **kwargs)

接口返回成功時(shí),響應(yīng)的數(shù)據(jù)格式如下:

{ 'code': 0, 'message': '成功', 'data': [ { 'keywords': '軟件工程', 'groupId': '10', 'userList': [ { 'name': ’林小熊’, 'infoList': [ { 'id_no': ’4413199509237848’, 'mobile_no': ’18565726783’ } ] } { 'name': ’林大熊’, 'infoList': [ { 'id_no': ’4413199509837848’, 'mobile_no': ’18565726788’ } ] } ] } ]}

(4)、請(qǐng)求接口成功后,如果有響應(yīng)數(shù)據(jù)的話(huà),就會(huì)動(dòng)態(tài)生成表格,在上面的js底下有封裝了幾個(gè)input表單隱藏域,用來(lái)保存數(shù)據(jù)使用,主要的思路是把表格底下的每一條數(shù)據(jù)的不同列都通過(guò)索引來(lái)區(qū)分標(biāo)記,比如第一行的就分別為row0,name0,id_no0,mobile_no0,以此類(lèi)推,主要js的代碼如下:

for (var i = 0; i < data.length; i++) { $(’#user_info’).append('<tr id=’row'+i+'’><input type=’hidden’ name=’row'+ i +'’ value=’'+i+'’><td>'+ data[i][’name’] + '</td><input type=’hidden’ name=’name'+ i +'’ value=’'+data[i][’name’]+'’><td>'+ data[i][’id_no’] + '</td><input type=’hidden’ name=’id_no'+ i +'’ value=’'+data[i][’id_no’]+'’><td>' + data[i][’mobile_no’]+'</td><input type=’hidden’ name=’mobile_no'+ i +'’ value=’'+data[i][’mobile_no’]+'’><td><a οnclick=’remove('+i+')’>移除</a></td></tr>')}

點(diǎn)擊保存之后,要將返回多條數(shù)據(jù)入庫(kù),而關(guān)鍵字是一樣的,關(guān)鍵字一樣,但是返回?cái)?shù)據(jù)多天,這里就要篩選處理數(shù)據(jù),主要代碼如下,那些model還有引包的這里就不附上了,這里主要是記錄如何得到所要保存的數(shù)據(jù),篩選過(guò)濾數(shù)據(jù):

class UserInfoAddView(View): def post(self, request, user_id): ''' 添加用戶(hù)信息 :param request: :param user_id: 用戶(hù)表id :return: ''' key_words = request.POST.get(’key_words’) common_user_data = {’key_words’: key_words} user_info_list = [] # 獲取所有表單數(shù)據(jù),但只篩選動(dòng)態(tài)表格底下的表單隱藏域名稱(chēng)包含row的,然后通過(guò)這個(gè)鍵找到其值,然后通過(guò)其值找到動(dòng)態(tài)表格的各個(gè)數(shù)據(jù),封裝為字典,并追加到列表底下 for key, val in request.POST.items(): user_dict = {} if ’row’ in key:name = request.POST.get(’name’ + val)id_no = request.POST.get(’id_no’ + val)mobile_no = request.POST.get(’mobile_no’ + val)user_dict[’name’] = nameuser_dict[’id_no’] = id_nouser_dict[’mobile_no’] = mobile_no # 這里過(guò)濾掉循環(huán)所產(chǎn)生空的字典,有數(shù)據(jù)才追加列表 if user_dict:user_info_list.append(user_dict) # 循環(huán)列表底下的字典數(shù)據(jù),并合并公共的數(shù)據(jù)字典,最后入庫(kù) for user in user_info_list: user_data = dict(common_user_data, **user) UserInfo.objects.create(**user_data) return render(request, ’/user/user_info_success.html’)

以上這篇Django實(shí)現(xiàn)列表頁(yè)商品數(shù)據(jù)返回教程就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品中国亚洲| 久久精品资源| 九一国产精品| 免费毛片在线不卡| 欧美特黄a级高清免费大片a级| 亚洲欧美日韩高清在线| 国产精品日韩| 日本亚洲最大的色成网站www | 久久久久国产一区二区| 日韩欧美精品综合| 亚洲精品一区三区三区在线观看| 伊人网在线播放| 成人福利av| 精精国产xxxx视频在线野外| 91精品国产成人观看| 99久久婷婷这里只有精品| 99热精品久久| 久久国产精品久久w女人spa| 久久亚洲影院| 日韩avvvv在线播放| 欧美国产免费| 日韩电影免费在线观看| 国产综合欧美| 亚洲一区二区成人| 日韩精品国产欧美| 久久99精品久久久野外观看| 国产aa精品| 亚洲精品国产偷自在线观看| 亚洲三级国产| 另类小说一区二区三区| 国产 日韩 欧美一区| 99热精品在线| 欧美日本精品| 桃色一区二区| 亚洲人成在线影院| 精品国产乱码久久久| 亚洲大全视频| 日精品一区二区三区| 国产一区二区三区视频在线| 黑丝一区二区三区| 欧美一级网址| 日本不良网站在线观看| 国产视频一区在线观看一区免费| 日韩专区视频网站| 久久午夜影院| 亚洲激情婷婷| 国产精品99久久免费| 国产一区久久| 国产精品nxnn| 久久电影一区| 四虎成人av| 水蜜桃久久夜色精品一区的特点 | 国产精品亲子伦av一区二区三区| 成人在线视频区| 亚洲欧美不卡| 福利一区和二区| 亚洲一区有码| 日韩欧美自拍| 国产欧美在线| 欧美日韩四区| 精品视频高潮| 男女男精品网站| 美女av在线免费看| 日本欧美一区二区| 米奇777超碰欧美日韩亚洲| 日韩高清不卡在线| 91精品啪在线观看国产18| 国产精品观看| 美女久久一区| 新版的欧美在线视频| 国产麻豆一区二区三区精品视频| 蜜桃视频欧美| 国产成人精品一区二区三区视频 | 欧美成人基地| 国产精品欧美三级在线观看| 今天的高清视频免费播放成人| 国产乱码精品一区二区三区四区 | 91高清一区| 成人国产精品一区二区网站| 日本中文字幕不卡| 国产亚洲精品自拍| 日韩一区二区在线免费| 国产精品日韩精品中文字幕| 美国欧美日韩国产在线播放| 日韩在线综合| 精品三区视频| 欧美日韩1区| 亚洲欧美久久久| 久久蜜桃精品| 中文字幕在线看片| 欧美91在线| 日韩精品亚洲专区| 麻豆久久精品| 一区二区视频欧美| 国产综合色区在线观看| 精品一区二区三区亚洲| 91九色综合| 蜜桃视频免费观看一区| aa亚洲婷婷| 久久麻豆精品| 欧美sss在线视频| 日本在线高清| 免费观看亚洲天堂| 国产美女撒尿一区二区| 日韩**一区毛片| 日韩欧美中文字幕电影| 亚洲一区av| 亚洲欧洲av| 亚洲91在线| 亚洲乱码一区| 日本一区二区三区视频在线看| 日韩在线a电影| 视频一区视频二区在线观看| 欧美日韩视频| 亚洲一区网站| 久久亚洲精品伦理| 水蜜桃久久夜色精品一区的特点| 亚洲午夜精品久久久久久app| 久久蜜桃资源一区二区老牛| 久久裸体视频| 亚洲国产专区| 欧美亚洲激情| 欧美在线亚洲综合一区| 亚洲精品午夜av福利久久蜜桃| 女人天堂亚洲aⅴ在线观看| 亚洲电影在线一区二区三区| 黄色日韩在线| 免费高清在线一区| 亚洲综合色婷婷在线观看| 亚洲69av| 欧美视频久久| 久久一区欧美| 日韩a一区二区| 国产日韩电影| 国产精品99一区二区| 丝袜亚洲另类欧美| 香蕉久久一区| 麻豆精品少妇| 天堂中文av在线资源库| 国产专区一区| 视频一区中文字幕| 欧美一区久久| 激情久久99| 蜜桃国内精品久久久久软件9| 国产农村妇女精品一二区| 无码日韩精品一区二区免费| 久久xxx视频| 伊伊综合在线| 亚洲欧美日韩视频二区| 91麻豆精品激情在线观看最新| 国产精品久久久网站| 日本精品黄色| 精品91久久久久| 日韩国产高清在线| 久久精品九色| 欧美日韩一二| 中文字幕成人| 激情中国色综合| 欧美日韩视频| 久久国产日韩欧美精品| 国产精品久久观看| 亚洲精品网址| 日韩国产高清在线| 久久精品人人| 亚洲激情二区| 国产欧美日韩视频在线| 三上亚洲一区二区| 欧美综合国产| 美女国产精品久久久| 亚洲高清激情| 国产乱码精品一区二区三区亚洲人 | 日韩中文字幕一区二区三区| 18国产精品| 成人久久久久| 日本成人中文字幕在线视频| 四季av一区二区凹凸精品| 一本色道久久精品| 国产精品香蕉| 欧美不卡视频| 国产高清亚洲| 亚洲欧美日韩高清在线| 国产美女久久| 亚洲免费高清| 加勒比视频一区| 玖玖玖国产精品| 欧美激情五月| 日韩中文字幕区一区有砖一区| 性一交一乱一区二区洋洋av| 亚洲一区日本| 日韩毛片一区| 欧美成人基地| 日韩欧美中文字幕一区二区三区 | 久久精品青草| 日韩一二三区在线观看| 91精品一区二区三区综合| 一二三区精品| 日韩欧美综合| 国产视频一区二区在线播放| 自拍日韩欧美| 黑森林国产精品av|