1. 程式人生 > >Django 1.11 json介面編寫以及測試

Django 1.11 json介面編寫以及測試

編寫介面

介面介紹

請求的是購物網站的分類後產品資料。

說明 詳情
介面名 classify
作用 返回請求的分類後的產品的Json格式資料
呼叫url api/
請求方法 Post
請求引數 “type” :整數 0 為 熱門,1為家居
”page”:整數頁碼
返回引數 “status” =
200 : 成功
10021 : 查詢列表為空
10022:分頁後產品為空

urls

因為嘗試些API介面,所以在目錄下新建了一個views檔案;
這裡寫圖片描述

from django.conf.urls import
url from taobao import views, views_api urlpatterns = [ url(r'^$', views.index), url(r'^api/',views_api.classify) ]

modles

from django.db import models

class goods(models.Model):
    category = models.IntegerField('分類',default=0)
    goods_id = models.CharField('商品ID',max_length=10)
    goods_name = models.CharField('商品名'
,max_length=100,default='') goods_price = models.DecimalField('商品價格',max_digits=10,decimal_places=2) goods_Stock = models.IntegerField('商品庫存',default=100) sales_Volume = models.IntegerField('銷量',default=0) goods_introduce = models.CharField('商品簡介',max_length=250,default='') def __str__(self)
:
return self.goods_name

views_api

from taobao.models import goods

from django.http import JsonResponse
from django.core.paginator import Paginator ,PageNotAnInteger ,EmptyPage

from django.views.decorators.csrf import  csrf_exempt

#分類展示
#測試的時候我先把csrf關了
@csrf_exempt
def classify(req):
    context ={'status':200}
    #獲取 post 資料
    type = req.POST.get('type','')
    page = req.POST.get('page','')
    context['type'] , context['page'] = type ,page

    #根據類別在資料庫找到相應資料
    if type == '0':
        goods_list = goods.objects.order_by('sales_Volume').all()
    else:
        goods_list = goods.objects.all().filter(category = int(type)).order_by('sales_Volume').all()

    #資料為空直接返回json
    if goods_list == None:
        return JsonResponse({'status':10021,'message':'parameter error'})

    #分頁
    paginator = Paginator(goods_list,8)
    try:
        goodss = paginator.page(int(page))
    except PageNotAnInteger:
        goodss = paginator.page(1)
    except EmptyPage:
        goodss = paginator.page(paginator.num_pages)

    #一頁商品的個數,是否有前一頁,是否有後一頁
    context['queryNum'],context['hasPrevios'],context['hasNext'] = len(goodss),goodss.has_previous(),goodss.has_next()

    #將資料存入data[]
    data = []
    if goodss:
        for i in goodss:
            good = {}
            good['goods_id'] = i.goods_id
            good['goods_name'] = i.goods_name
            good['goods_price'] = i.goods_price
            good['goods_stock'] = i.goods_Stock
            good['sales_volume'] = i.sales_Volume
            good['goods_introduce'] = i.goods_introduce
            data.append(good)
        # 將data存進context
        context.update({'data':data})
        # 返回json
        return JsonResponse(context)
    else:
        return  JsonResponse({'status':10022,'message':'query goods isempty'})

介面測試

這裡使用到postman;
用chrome瀏覽器新增擴充套件程式Postman,並安裝桌面應用。
應用頁面如下:
這裡寫圖片描述

這裡寫圖片描述

  1. 填上url。
  2. 選擇傳輸資料方式。
  3. 點選下方body,選擇form-data
  4. 輸入引數 “type” = 1,”page” = 1,點選send。

下方返回json資料

{
    "status": 200,
    "type": "1",
    "page": "1",
    "queryNum": 8,
    "hasPrevios": false,
    "hasNext": true,
    "data": [
        {
            "goods_id": "33428",
            "goods_name": " 岷江音樂 三角調配茶包 8枚",
            "goods_price": "45.00",
            "goods_stock": 100,
            "sales_volume": 0,
            "goods_introduce": " 音樂和茶 伴你左右 "
        },
        {
            "goods_id": "33431",
            "goods_name": " 【預售】榨冰+沙拉一體機",
            "goods_price": "249.00",
            "goods_stock": 100,
            "sales_volume": 0,
            "goods_introduce": " 沙冰或沙拉 它都能搞定 "
        },
        {
            "goods_id": "32755",
            "goods_name": " 特級初榨橄欖油 500ml 8色可選,2種口味,義大利純手工制罐,古法壓榨油",
            "goods_price": "299.00",
            "goods_stock": 100,
            "sales_volume": 0,
            "goods_introduce": " 橄欖油奧斯卡得主 "
        },
        {
            "goods_id": "31226",
            "goods_name": " Ball Mason Jar 梅森罐 玻璃密封罐 蔬菜沙拉罐 12oz水晶杯 360ml",
            "goods_price": "39.00",
            "goods_stock": 100,
            "sales_volume": 0,
            "goods_introduce": " 美觀實用合二為一 "
        },
        {
            "goods_id": "33411",
            "goods_name": " 土耳其手工玻璃貝殼盤 2件套",
            "goods_price": "138.00",
            "goods_stock": 100,
            "sales_volume": 0,
            "goods_introduce": " 手工上色 匠心之作 "
        },
        {
            "goods_id": "32998",
            "goods_name": " 梅森瓶蔬果榨汁機 含兩個梅森瓶",
            "goods_price": "498.00",
            "goods_stock": 100,
            "sales_volume": 0,
            "goods_introduce": " 營養果汁 隨時打包 "
        },
        {
            "goods_id": "33409",
            "goods_name": " 土耳其手工璃魚盤 3件套",
            "goods_price": "169.00",
            "goods_stock": 100,
            "sales_volume": 0,
            "goods_introduce": " 把海洋搬到餐桌上 "
        },
        {
            "goods_id": "33416",
            "goods_name": " 小確幸調味花果茶 泡袋茶 9枚裝",
            "goods_price": "58.00",
            "goods_stock": 100,
            "sales_volume": 0,
            "goods_introduce": " 每天都多一份小確幸 "
        }
    ]
}