{"id":3548,"date":"2022-03-16T17:20:33","date_gmt":"2022-03-16T09:20:33","guid":{"rendered":"https:\/\/egonlin.com\/?p=3548"},"modified":"2022-03-16T17:20:33","modified_gmt":"2022-03-16T09:20:33","slug":"%e7%ac%ac%e4%ba%8c%e8%8a%82%ef%bc%9a%e7%a4%bc%e7%89%a9%e5%88%97%e8%a1%a8","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=3548","title":{"rendered":"\u7b2c\u4e8c\u8282\uff1a\u793c\u7269\u5217\u8868"},"content":{"rendered":"<h3>\u793c\u7269\u5217\u8868<\/h3>\n<p><strong>\u9700\u6c42:<\/strong>\u4ece\u6311\u9009\u793c\u7269\u4e2d\u5230\u793c\u7269\u5217\u8868\uff0c\u5217\u8868\u4e2d\u6709\u793c\u7269\u5206\u7c7b\u3002\u70b9\u51fb\u5206\u7c7b\u83b7\u53d6\u5206\u7c7b\u793c\u7269<\/p>\n<h4>\u5c0f\u7a0b\u5e8f\u7aef<\/h4>\n<p>app.json\u6587\u4ef6\uff0c\u7531\u4e8ejson\u6570\u636e\u4e0d\u80fd\u6ce8\u91ca\uff0c\u6240\u6709\u6ce8\u91ca\u6dfb\u52a0\u5728\u5f00\u5934\uff0c\u6dfb\u52a0\u5546\u54c1\u5217\u8868\u9875\u8def\u7531\u3002<\/p>\n<pre><code class=\"language-json\">{\n  &quot;pages&quot;: [\n    &quot;pages\/list\/list&quot;,\n  ],\n  &quot;window&quot;: {\n    &quot;backgroundTextStyle&quot;: &quot;light&quot;,\n    &quot;navigationBarBackgroundColor&quot;: &quot;#e50e38&quot;,\n    &quot;navigationBarTitleText&quot;: &quot;\u767e\u6b65\u751f\u6d3b&quot;,\n    &quot;navigationBarTextStyle&quot;: &quot;#fff&quot;,\n    &quot;enablePullDownRefresh&quot;: false,\n    &quot;backgroundColor&quot;: &quot;#e50e38&quot;\n  },\n\n}<\/code><\/pre>\n<p>app.js<\/p>\n<p>\u5728app.js\u6587\u4ef6\u4e2d\u914d\u7f6e\u6211\u4eec\u63a5\u53e3\u7684\u57df\u540d<\/p>\n<pre><code class=\"language-js\">App({\n  \/\/\u8bbe\u7f6e\u5168\u5c40\u7684\u53d8\u91cf\uff0capiDomain\u8fd9\u662f\u6211\u4eec\u63a5\u53e3\u7684ip\n  globalData: {\n    apiDomain:&#039;http:\/\/127.0.0.1:8000&#039;,\n  }\n})<\/code><\/pre>\n<p>list.json<\/p>\n<p>\u5728list.json\u914d\u7f6e\u5f53\u524dlist\u9875\u9762\u7684\u4fe1\u606f<\/p>\n<pre><code class=\"language-json\">{\n  &quot;backgroundTextStyle&quot;: &quot;light&quot;,\n  &quot;navigationBarBackgroundColor&quot;: &quot;#da2a2a&quot;,\n  &quot;navigationBarTitleText&quot;: &quot;\u9009\u62e9\u793c\u7269&quot;,\n  &quot;navigationBarTextStyle&quot;: &quot;#fff&quot;,\n  &quot;enablePullDownRefresh&quot;: &quot;true&quot;,\n  &quot;enablePullDownRefresh&quot;: false,\n  &quot;onReachBottomDistance&quot;: 100\n}<\/code><\/pre>\n<p>list.wxml<\/p>\n<pre><code class=\"language-php+HTML\">&lt;view class=&quot;container&quot;&gt;\n  &lt;view class=&quot;searcher&quot;&gt;\n      &lt;navigator class=&quot;inner&quot; url=&quot;\/pages\/list\/search\/search&quot;&gt;\n          &lt;image class=&quot;icon-search&quot; src=&#039;..\/..\/images\/searcher.png&#039;&gt;&lt;\/image&gt;\n          &lt;text&gt;\u641c\u7d22\u70ed\u95e8\u793c\u7269&lt;\/text&gt;\n      &lt;\/navigator&gt;\n  &lt;\/view&gt;\n  &lt;!--\u5206\u7c7b\u6a2a\u5411\u6ed1\u52a8--&gt;\n  &lt;scroll-view scroll-x=&quot;true&quot; class=&quot;category&quot;&gt;\n        &lt;!--\u5982\u679ccurId\u7b49\u4e8e0\uff0c\u5219\u6dfb\u52a0active\u5c5e\u6027\uff0cbindtap=&#039;loadLists&#039;\uff0c\u5c06\u6b64\u6807\u7b7e\u7ed1\u5b9a\u8be5\u65b9\u6cd5\uff0c\u5728\u65b9\u6cd5\u4e2d\u6211\u4eec\u53ef\u4ee5\u83b7\u53d6data-index\u548cdata-id\u7684\u503c--&gt;\n      &lt;view class=&quot;cateItem {{curId==0?&#039;active&#039;:&#039;&#039;}}&quot; data-index=&quot;0&quot; data-id=&quot;0&quot; bindtap=&#039;loadLists&#039;&gt;\n          &lt;text&gt;\u5168\u90e8&lt;\/text&gt;\n      &lt;\/view&gt;\n    &lt;!--\u5faa\u73afcategory\uff0c\u5176\u4ed6\u7684\u6807\u7b7e\u7684\u610f\u601d\u540c\u4e0a--&gt;\n      &lt;block wx:for=&quot;{{category}}&quot; wx:for-index=&quot;index&quot; wx:key=&quot;key&quot;&gt;\n          &lt;view class=&quot;cateItem {{curId==item.cat_id?&#039;active&#039;:&#039;&#039;}}&quot; data-index=&quot;{{index+1}}&quot; data-id=&quot;{{item.cat_id}}&quot; bindtap=&#039;loadLists&#039;&gt;\n              &lt;text&gt;{{item.category_name}}&lt;\/text&gt;\n          &lt;\/view&gt;\n      &lt;\/block&gt;\n  &lt;\/scroll-view&gt;\n  &lt;view class=&quot;line&quot;&gt;&lt;\/view&gt;\n  &lt;scroll-view class=&quot;lists&quot;&gt;\n    &lt;!--\u5faa\u73afcontentlist\u5546\u54c1\u5217\u8868\uff0c\u5176\u4ed6\u7684\u6807\u7b7e\u7684\u610f\u601d\u540c\u4e0a--&gt;\n      &lt;block wx:for=&quot;{{contentlist}}&quot; wx:for-index=&quot;index&quot; wx:key=&quot;key&quot;&gt;\n          &lt;view class=&quot;item&quot; data-url=&quot;{{item.product_id}}&quot; data-img=&quot;{{item.m_url}}&quot; data-brief=&quot;{{item.brief}}&quot; data-price=&quot;{{item.price}}&quot; bindtap=&quot;loadDetail&quot;&gt;\n              &lt;view class=&quot;inner&quot;&gt;\n                  &lt;image class=&quot;p-image&quot; src=&quot;{{item.m_url}}&quot;  mode=&quot;aspectFill&quot; style=&quot;width:100%;&quot;\/&gt;   \n                  &lt;view class=&quot;p-name&quot;&gt;{{item.name}}&lt;\/view&gt; \n                  &lt;view class=&quot;p-brief&quot;&gt;{{item.brief}}&lt;\/view&gt;\n                  &lt;view class=&quot;p-price&quot;&gt;\u00a5{{item.price}}&lt;\/view&gt;\n              &lt;\/view&gt; \n          &lt;\/view&gt;          \n      &lt;\/block&gt; \n  &lt;\/scroll-view&gt;\n&lt;\/view&gt;<\/code><\/pre>\n<p>list.wxss<\/p>\n<pre><code class=\"language-css\">\/* pages\/list\/list.wxss *\/\n.searcher{\n    height: 80rpx;\n    width: 100%;\n    position: fixed;\n    top: 0;\n    border-bottom: 2rpx solid #f2f2f2;\n    line-height: 80rpx;\n    font-size: 24rpx;\n    z-index: 999;\n   background-color: #fff;\n}\n.searcher .inner{\n  width: 670rpx;\n  background: #f2f2f2;\n  height: 60rpx;\n  line-height: 60rpx;\n  position: absolute;\n  left: 40rpx;\n  top: 10rpx;\n  border-radius: 8rpx;\n}\n.icon-search{\n    width: 36rpx;\n    height: 36rpx;\n    position: absolute;\n    left: 12rpx;\n    top: 12rpx;\n}\n.searcher .inner text{\n  color: #999;\n  padding-left: 80rpx;\n}\n.category{\n  height: 80rpx;\n   white-space: nowrap;\n   position: fixed;\n   z-index: 999;\n   top: 82rpx;\n   background-color: #fff;\n}\n.cateItem{\n  display: inline-block;\n  line-height: 80rpx;\n  width: 115rpx;\n  text-align: center;\n  white-space: nowrap;\n  font-size: 24rpx;\n}\n.cateItem.active text{\n  line-height: 74rpx;\n  border-bottom:2rpx solid #e03131;\n  display: inline-block;\n}\n.line{\n  border-top: 2rpx solid #eee;\n  width: 100%;\n}\n.container{\n  padding: 0;\n}\n.lists{\n  padding-top: 162rpx;\n}\n.item{\n  width: 335rpx;\n  float: left;\n  padding: 20rpx;\n}\n.p-image{\n  width: 335rpx;\n  height: 335rpx;\n}\n.p-name{\n  width: 100%;\n  height: 40rpx;\n  font-size: 14px;\n  line-height: 40rpx;\n  word-break: break-all;\n  -webkit-box-orient: vertical;\n  -webkit-line-clamp:1;\n  overflow: hidden;\n  text-overflow:ellipsis;\n  display: -webkit-box;\n}\n.p-brief{\n  width: 100%;\n  font-size: 13px;\n  height: 40rpx;\n  color: #ccc;\n  line-height: 40rpx;\n  word-break: break-all;\n  -webkit-box-orient: vertical;\n  -webkit-line-clamp:1;\n  overflow: hidden;\n  text-overflow:ellipsis;\n  display: -webkit-box;\n}\n.p-price{\n  width: 100%;\n  font-size: 16px;\n  height: 40rpx;\n  color: #e03131;\n  line-height: 50rpx;\n  word-break: break-all;\n  -webkit-box-orient: vertical;\n  -webkit-line-clamp:1;\n  overflow: hidden;\n  text-overflow:ellipsis;\n  display: -webkit-box;\n}\n.intro{\n  transform: rotate(45deg);\n  background: #e03131;\n  color: #fff;\n  font-size: 14px;\n  text-align: center;\n  position: absolute;\n  right:-112rpx;\n  width:100%;\n  top:36rpx;\n}\n.inner{\n  overflow: hidden;\n  position: relative;\n}<\/code><\/pre>\n<p>list.js<\/p>\n<pre><code class=\"language-js\">const app = getApp();\n\nPage({\n\n  \/**\n   * \u9875\u9762\u7684\u521d\u59cb\u6570\u636e\n   *\/\n  data: {\n    category:[],\n    page: 1,\n    pageSize: 30,\n    hasMoreData: true,\n    contentlist: [],\/\/\u5168\u90e8\u5217\u8868\n    cateLists:[],\/\/\u4fdd\u5b58\u5206\u7c7b\u5217\u8868\u7f13\u5b58\u6570\u636e\n    curId:0,\/\/\u5934\u90e8\u5206\u7c7b\u9ed8\u8ba4\u9009\u4e2d\u7684\u5206\u7c7bid\n    curIndex:0\/\/\u5f53\u524d\u9009\u4e2d\u5206\u7c7b\u7684index\u7d22\u5f15\u503c\n  },\n\n  \/**\n   * \u751f\u547d\u5468\u671f\u51fd\u6570--\u76d1\u542c\u9875\u9762\u52a0\u8f7d\n   *\/\n  onLoad: function (options) {\/\/\u521d\u59cb\u5316\u52a0\u8f7d\u9996\u9875\u5168\u90e8\u6570\u636e\n    wx.showLoading({\n      title: &#039;\u52a0\u8f7d\u4e2d&#039;,\n    })\n    var _self = this;\n    wx.request({\/\/\u83b7\u53d6\u5206\u7c7b\u6570\u636e\n      url: app.globalData.apiDomain +&#039;\/api\/indexlist\/categoryList&#039;, \n      data: {\n      },\n      header: {\n        &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n      },\n      success: function (res) {\n        console.log(res.data.data)\n        _self.setData({\n          category: res.data.data\n        },function(){\n          var tmp_Lists = [];\n          tmp_Lists.push(new Array());\n          for(var j=1;j&lt;=res.data.data.length;j++){\n            tmp_Lists.push(new Array());\n          };\n          _self.setData({\n            cateLists:tmp_Lists\n          },function(){\n            wx.request({\/\/\u83b7\u53d6\u5206\u7c7b\u9996\u9875\u5217\u8868\u6570\u636e\n              url: app.globalData.apiDomain + &#039;\/api\/indexlist\/IndexProductList&#039;,\n              data: {\n                &#039;page&#039;: _self.data.page,\n              },\n              method: &#039;POST&#039;,\n              header: {\n                &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n              },\n              success: function (res) {\n                console.log(res)\n                _self.setData({\n                  page: _self.data.page + 1\n                });\n                if (res.data.data.prev &lt; res.data.data.sums_page) {\/\/\u4e0b\u4e00\u9875\u6709\u6570\u636e\n                  _self.setData({\n                    hasMoreData: true\n                  });\n                } else {\n                  _self.setData({\n                    hasMoreData: false\n                  });\n                };\n                var homeListsName = &#039;cateLists[0]&#039;;\n                _self.setData({\n                  [homeListsName]: res.data.data,\n                  contentlist: res.data.data.list\n                });\n                wx.hideLoading();\n              }\n            })\n          })\n        });\n      }\n    });\n  },\n\n  getMoreLists:function(){\/\/\u52a0\u8f7d\u66f4\u591a\u5217\u8868\n    var _this = this;\n    \/\/\u5168\u90e8\u5217\u8868\u63a5\u53e3\n    var _url = app.globalData.apiDomain + &#039;\/api\/indexlist\/IndexProductList&#039;;\n    var _data = &#039;&#039;;\n    if (_this.data.curId!=0){\n      \/\/\u5206\u7c7b\u5217\u8868\u63a5\u53e3\n      _url = app.globalData.apiDomain + &#039;\/api\/indexlist\/categoryProductsList&#039;;\n      _data = {\n        &#039;page&#039;: _this.data.page,\n        &#039;category_id&#039;: _this.data.curId\n      }\n    }else{\n      _data = {\n        &#039;page&#039;: _this.data.page\n      }\n    };\n    wx.request({\n      url: _url,\n      data:_data,\n      method: &#039;POST&#039;,\n      header: {\n        &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n      },\n      success: function (res) {\n        _this.setData({\n          page: _this.data.page + 1\n        });\n        if (res.data.data.prev &lt; res.data.data.sums_page) {\/\/\u4e0b\u4e00\u9875\u6709\u6570\u636e\n          _this.setData({\n            hasMoreData: true\n          });\n        } else {\n          _this.setData({\n            hasMoreData: false\n          });\n        }\n        var tmpArr = _this.data.contentlist;\n        for(var i=0;i&lt;res.data.data.list.length;i++){\n          tmpArr.push(res.data.data.list[i]);\n        }\n        var homeListsName = &#039;cateLists[&#039; + _this.data.curIndex+&#039;]&#039;;\n        var curListsName = &#039;cateLists[&#039; + _this.data.curIndex + &#039;].list&#039;;\n        _this.setData({\n          contentlist: tmpArr,\n          [homeListsName]: res.data.data\n        },function(){\n          _this.setData({\n            [curListsName]: tmpArr\n          })\n        });\n        wx.hideLoading();\n      }\n    })\n  },\n  \/**\n   * \u9875\u9762\u4e0a\u62c9\u89e6\u5e95\u4e8b\u4ef6\u7684\u5904\u7406\u51fd\u6570\n   *\/\n  onReachBottom: function () {\n    var _this = this;\n    if (_this.data.hasMoreData) {\n      wx.showLoading({\n        title: &#039;\u52a0\u8f7d\u66f4\u591a\u6570\u636e&#039;,\n      });\n      _this.getMoreLists();\n    } else {\n      wx.showToast({\n        title: &#039;\u6ca1\u6709\u66f4\u591a\u6570\u636e&#039;,\n      })\n    }\n  },\n\n  loadDetail: function (e) {\/\/\u8df3\u8f6c\u8be6\u60c5\u9875\n    var pid = e.currentTarget.dataset.url;\n    var img = e.currentTarget.dataset.img;\n    var brief = e.currentTarget.dataset.brief;\n    var price = e.currentTarget.dataset.price;    \n    wx.navigateTo({\n      url: &#039;..\/item\/item?id=&#039; + pid + &#039;&amp;img=&#039; + img + &#039;&amp;brief=&#039; + brief + &#039;&amp;price=&#039; + price,\n      success: function (res) { },\n      fail: function (res) { },\n      complete: function (res) { },\n    })\n  },\n  loadLists: function (e) {\/\/\u70b9\u51fb\u5206\u7c7btab\u4e8b\u4ef6\n    var id = e.currentTarget.dataset.id;\n    var index = e.currentTarget.dataset.index;\n    var _this = this;\n    _this.setData({\n      curIndex:index\n    },function(){\n      if (id != _this.data.curId) {\/\/\u70b9\u51fb\u7684\u4e0d\u662f\u5f53\u524d\u9009\u4e2d\u9879\n        _this.setData({\n          curId: id\n        },function(){\n          console.log(id);\n          if (id != 0) {\/\/\u4e0d\u662f\u5168\u90e8\n            if (_this.data.cateLists[index].list) {\/\/\u5224\u65ad\u5f53\u524d\u5206\u7c7b\u7684\u5217\u8868\u6570\u636e\u662f\u5426\u5b58\u5728\n              \/\/console.log(&#039;\u5df2\u6709\u6570\u636e&#039;);\n              _this.showLists();\n            } else {\/\/\u4e0d\u5b58\u5728\u52a0\u8f7d\u7b2c\u4e00\u9875\u7684\u6570\u636e\n              \/\/console.log(&#039;\u6ca1\u6709\u6570\u636e&#039;);\n              _this.getCateLists();\n            }\n          } else if(id==0) {\/\/\u9996\u9875\n            if (_this.data.cateLists[index].list) {\/\/\u5224\u65ad\u5f53\u524d\u5206\u7c7b\u7684\u5217\u8868\u6570\u636e\u662f\u5426\u5b58\u5728\n              \/\/console.log(&#039;\u9996\u9875\u5df2\u6709\u6570\u636e&#039;);\n              _this.showLists();\n            } else {\n              \/\/console.log(&#039;\u9996\u9875\u6ca1\u6709\u6570\u636e&#039;);\n              \/\/_this.getCateLists();\n            }\n          };\n        })\n\n      };\n    })\n\n  },\n  getCateLists:function(){\/\/\u83b7\u53d6\u5f53\u524d\u5206\u7c7b\u7684\u7b2c\u4e00\u9875\u6570\u636e\n    var _this = this;\n    var cate_id = _this.data.curId;\n    wx.showLoading({\n      title: &#039;\u52a0\u8f7d\u4e2d&#039;,\n    });\n    wx.pageScrollTo({\n      scrollTop: 0,\n    })\n    wx.request({\n      url: app.globalData.apiDomain + &#039;\/api\/indexlist\/categoryProductsList&#039;,\n      data: { &#039;page&#039;: 1, &#039;category_id&#039;: _this.data.curId},\n      method: &#039;POST&#039;,\n      header: {\n        &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n      },\n      success: function (res) {\n        _this.setData({\n          page: 2\n        });\n        if (res.data.data.prev &lt; res.data.data.sums_page) {\/\/\u4e0b\u4e00\u9875\u6709\u6570\u636e\n          _this.setData({\n            hasMoreData: true\n          });\n        } else {\n          _this.setData({\n            hasMoreData: false\n          });\n        }\n        var tmpArr = [];\n        for (var i = 0; i &lt; res.data.data.list.length; i++) {\n          tmpArr.push(res.data.data.list[i]);\n        }\n        var homeListsName = &#039;cateLists[&#039; + _this.data.curIndex + &#039;]&#039;;\n        var curListsName = &#039;cateLists[&#039; + _this.data.curIndex + &#039;].list&#039;;\n        _this.setData({\n          contentlist: tmpArr,\n          [homeListsName]: res.data.data\n        }, function () {\n          _this.setData({\n            [curListsName]: tmpArr\n          })\n        });\n        wx.hideLoading();\n      }\n    })\n  },\n  showLists:function(){\/\/\u5b58\u5728\u6570\u636e\uff0c\u663e\u793a\u5207\u6362\n      var _this = this;\n      wx.pageScrollTo({\n        scrollTop: 0,\n      })\n      if (_this.data.cateLists[_this.data.curIndex].sums_page &gt;= _this.data.cateLists[_this.data.curIndex].next) {\/\/\u6709\u4e0b\u4e00\u9875\n        _this.setData({\n          hasMoreData: true\n        })\n      } else {\n        _this.setData({\n          hasMoreData: false\n        })\n      };\n      _this.setData({\/\/\u66f4\u65b0\u5217\u8868\u6570\u636e\u548c\u5176\u4ed6\u76f8\u5173\u6570\u636e\n        contentlist:_this.data.cateLists[_this.data.curIndex].list,\/\/\u5217\u8868\u5185\u5bb9\n      });\n  }\n})<\/code><\/pre>\n<h4>\u670d\u52a1\u7aef<\/h4>\n<p>1.\u521b\u5efa\u83b7\u53d6\u5206\u7c7b\u5217\u8868product.caetgoryList.as_view()<\/p>\n<p>2.\u83b7\u6240\u6709\u5546\u54c1\u5217\u8868product.ProductList.as_view()<\/p>\n<p>3.\u83b7\u53d6\u5206\u7c7b\u4e0b\u7684\u5546\u54c1\u5217\u8868 product.categoryProductsList<\/p>\n<p>url.py<\/p>\n<pre><code class=\"language-python\">from django.contrib import admin\nfrom django.urls import path\nfrom django.conf.urls import url\nfrom api.views import product\n\nurlpatterns = [\n    path(&#039;admin\/&#039;, admin.site.urls),\n    url(r&#039;^api\/indexlist\/categoryList$&#039;, product.caetgoryList.as_view()),\n    url(r&#039;^api\/indexlist\/IndexProductList$&#039;, product.ProductList.as_view()),\n    url(r&#039;^api\/indexlist\/categoryProductsList$&#039;, product.categoryProductsList.as_view()),\n]<\/code><\/pre>\n<p>product.py<\/p>\n<pre><code class=\"language-python\">from rest_framework.views import APIView\nfrom api import baseResponse\nfrom api import models\nfrom django.http import JsonResponse\nfrom rest_framework.pagination import PageNumberPagination\nimport math\nfrom api.MySer.MySer import ProductsSerializer,CategorySerializer\n#\u5206\u7c7b\u5217\u8868\u63a5\u53e3\nclass caetgoryList(APIView):\n\n    def get(self, request):\n        #\u8fd9\u91cc\u56e0\u4e3a\u6a21\u62df\u6570\u636e\uff0c\u6211\u8fd9\u91cc\u5c06\u5206\u7c7bid\u56fa\u5b9a\n        data_obj = models.Category.objects.filter(cat_id__in=[6458,6460,6477,6486,6481,6500,6552]).order_by(&#039;p_order&#039;)\n        #\u5e8f\u5217\u5316\u7ec4\u4ef6\uff0c\u5e8f\u5217\u5316\u8fd4\u56de\u7684\u6570\u636e\n        data_list=CategorySerializer(instance=data_obj, many=True)\n        data=data_list.data\n        re_data = baseResponse.resdic(&quot;success&quot;, &quot;\u67e5\u8be2\u6210\u529f&quot;,data)\n        return JsonResponse(re_data)\n\n#\u6240\u6709\u5546\u54c1\u5217\u8868\u63a5\u53e3\nclass ProductList(APIView,):\n    def post(self,request):\n        params = request.data\n        #\u5224\u65ad\u662f\u5426\u6709\u9875\u6570\u53c2\u6570\n        if params.get(&#039;page&#039;):\n            page=params[&#039;page&#039;]\n            ret = models.Products.objects.all()\n            count=ret.count()\n            sums_page=math.ceil(count\/10)\n            next= page + 1 if (page+1) &lt;sums_page else sums_page\n            prev = page - 1 if (page - 1) &gt; 0 else 1\n            # \u521b\u5efa\u5206\u9875\u5bf9\u8c61\n            page_obj = PageNumberPagination()\n            page_obj.page_size = 10\n            page_obj.page_query_param = &#039;page&#039;\n            # \u5b9a\u5236\u4f20\u53c2\n            page_obj.page_size_query_param = &#039;size&#039;\n            # \u6700\u5927\u4e00\u9875\u7684\u6570\u636e\n            page_obj.max_page_size = 10\n            # \u5728\u6570\u636e\u5e93\u4e2d\u83b7\u53d6\u5206\u9875\u7684\u6570\u636e\n            page_list = page_obj.paginate_queryset(ret, request, view=self)\n            # \u5bf9\u5206\u9875\u8fdb\u884c\u5e8f\u5217\u5316\n            data_list=ProductsSerializer(instance=page_list, many=True)\n            p_data={}\n            p_data[&#039;sums_page&#039;] = sums_page\n            p_data[&#039;next&#039;] =next\n            p_data[&#039;prev&#039;] = prev\n            p_data[&#039;list&#039;] = data_list.data\n            print(&#039;list&#039;)\n            print(type(data_list.data))\n            re_data = baseResponse.resdic(&quot;success&quot;, &quot;\u67e5\u8be2\u6210\u529f&quot;, p_data)\n            return JsonResponse(re_data)\n\n        else:\n            re_data = baseResponse.resdic(&quot;error&quot;, &quot;\u7f3a\u5c11\u53c2\u6570&quot;)\n            return JsonResponse(re_data)\n\n#\u5206\u7c7b\u5546\u54c1\u5217\u8868\nclass categoryProductsList(APIView):\n    def post(self,request):\n        params = request.data\n        if params.get(&#039;page&#039;) and  params.get(&#039;category_id&#039;):\n            page=params[&#039;page&#039;]\n            category_id=params[&#039;category_id&#039;]\n            ret = models.Products.objects.filter(cat_id__cat_id=category_id)\n            count=ret.count()\n            sums_page=math.ceil(count\/10)\n            #\u503c1 if \u6761\u4ef6 else \u503c2\n            next= page + 1 if (page+1) &lt;sums_page else sums_page\n            prev = page - 1 if (page - 1) &gt; 0 else 1\n            # \u521b\u5efa\u5206\u9875\u5bf9\u8c61\n            page_obj = PageNumberPagination()\n            page_obj.page_size = 10\n            page_obj.page_query_param = &#039;page&#039;\n            # \u5b9a\u5236\u4f20\u53c2\n            page_obj.page_size_query_param = &#039;size&#039;\n            # \u6700\u5927\u4e00\u9875\u7684\u6570\u636e\n            page_obj.max_page_size = 10\n            # \u5728\u6570\u636e\u5e93\u4e2d\u83b7\u53d6\u5206\u9875\u7684\u6570\u636e\n            page_list = page_obj.paginate_queryset(ret, request, view=self)\n            # \u5bf9\u5206\u9875\u8fdb\u884c\u5e8f\u5217\u5316\n            data_list=ProductsSerializer(instance=page_list, many=True)\n            p_data={}\n            p_data[&#039;sums_page&#039;] = sums_page\n            p_data[&#039;next&#039;] =next\n            p_data[&#039;prev&#039;] = prev\n            p_data[&#039;list&#039;] = data_list.data\n            print(&#039;list&#039;)\n            print(data_list.data)\n            re_data = baseResponse.resdic(&quot;success&quot;, &quot;\u67e5\u8be2\u6210\u529f&quot;, p_data)\n            return JsonResponse(re_data)\n        else:\n            re_data = baseResponse.resdic(&quot;error&quot;, &quot;\u7f3a\u5c11\u53c2\u6570&quot;)\n            return JsonResponse(re_data)<\/code><\/pre>\n<h3><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>\u793c\u7269\u5217\u8868 \u9700\u6c42:\u4ece\u6311\u9009\u793c\u7269\u4e2d\u5230\u793c\u7269\u5217\u8868\uff0c\u5217\u8868\u4e2d\u6709\u793c\u7269\u5206\u7c7b\u3002\u70b9\u51fb\u5206\u7c7b\u83b7\u53d6\u5206\u7c7b\u793c\u7269 \u5c0f\u7a0b\u5e8f\u7aef app.json\u6587\u4ef6 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[307,309],"tags":[],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/3548"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3548"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/3548\/revisions"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}