{"id":3550,"date":"2022-03-16T17:21:10","date_gmt":"2022-03-16T09:21:10","guid":{"rendered":"https:\/\/egonlin.com\/?p=3550"},"modified":"2022-03-16T17:21:10","modified_gmt":"2022-03-16T09:21:10","slug":"%e7%ac%ac%e4%b8%89%e8%8a%82%ef%bc%9a%e5%95%86%e5%93%81%e8%af%a6%e6%83%85%e9%a1%b5","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=3550","title":{"rendered":"\u7b2c\u4e09\u8282\uff1a\u5546\u54c1\u8be6\u60c5\u9875"},"content":{"rendered":"<h3>\u5546\u54c1\u8be6\u60c5\u9875<\/h3>\n<p><strong>\u9700\u6c42\uff1a<\/strong>\u70b9\u51fb\u793c\u7269\uff0c\u8fdb\u5165\u793c\u7269\u8be6\u60c5\u9875\uff0c\u53ef\u4ee5\u70b9\u51fb\u7acb\u5373\u8d2d\u4e70\uff0c\u7136\u540e\u8fd4\u56de\u793c\u7269\u751f\u6210\u9875<\/p>\n<h4>\u5c0f\u7a0b\u5e8f\u7aef\uff1a<\/h4>\n<p>app.json<\/p>\n<pre><code class=\"language-json\">{\n  &quot;pages&quot;: [\n    &quot;pages\/list\/list&quot;,\n    &quot;pages\/item\/item&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}<\/code><\/pre>\n<p>item.json<\/p>\n<pre><code class=\"language-json\">{\n  &quot;navigationBarTitleText&quot;: &quot;\u8be6\u60c5\u9875&quot;\n}<\/code><\/pre>\n<p>item.wxml<\/p>\n<pre><code class=\"language-php+HTML\">&lt;view class=&quot;container&quot;&gt;\n  &lt;swiper indicator-dots=&quot;true&quot; autoplay=&quot;true&quot; interval=&quot;5000&quot; duration=&quot;1000&quot;&gt;\n      &lt;block wx:for=&quot;{{imgUrls}}&quot;&gt;\n          &lt;swiper-item&gt;\n              &lt;image src=&quot;{{item}}&quot; class=&quot;slideImage&quot; \/&gt;\n          &lt;\/swiper-item&gt;\n      &lt;\/block&gt;\n  &lt;\/swiper&gt;\n  &lt;view class=&quot;name&quot;&gt;{{name}}&lt;\/view&gt;\n  &lt;view class=&quot;brief&quot;&gt;{{brief}}&lt;\/view&gt;\n  &lt;view class=&quot;price&quot;&gt;\u00a5{{price}}&lt;\/view&gt;\n  &lt;view class=&quot;buy&quot; bindtap=&quot;buyproduct&quot;&gt;\u7acb\u5373\u8d2d\u4e70&lt;\/view&gt;\n&lt;\/view&gt;<\/code><\/pre>\n<p>item.wxss<\/p>\n<pre><code class=\"language-css\">.container{\n  padding: 0;\n}\n.container .buy{\n  width: 100%;\n  height: 88rpx;\n  background: #e50e38;\n  text-align: center;\n  color: #fff;\n  line-height: 88rpx;\n  position:fixed;\n  bottom:0;\n  font-size:30rpx;\n  letter-spacing:3rpx;\n}\n.container swiper{\n  width: 750rpx;\n  height: 750rpx;\n}\n.slideImage{\n  width: 750rpx;\n  height: 750rpx;\n}\n.name{\n  text-align: center;\n  font-size: 28rpx;\n  color: #000;\n  line-height: 48rpx;\n  padding-top: 20rpx;\n}\n.brief{\n  text-align: center;\n  font-size: 24rpx;\n  color: #ccc;\n  line-height: 48rpx;\n}\n.price{\n  text-align: center;\n  font-size: 24rpx;\n  color: #e50e38;\n  line-height: 48rpx;\n}<\/code><\/pre>\n<p>item.js<\/p>\n<pre><code class=\"language-js\">\/\/ pages\/item\/item.js\nconst app = getApp();\nPage({\n\n  \/**\n   * \u9875\u9762\u7684\u521d\u59cb\u6570\u636e\n   *\/\n  data: {\n    imgUrls: []\n  },\n  buyproduct:function(){\n    var _this = this;\n    var item = {\n      &#039;name&#039;: _this.data.name,\n      &#039;price&#039;: _this.data.price,\n      &#039;img&#039;: _this.data.imgUrls[0],\n      &#039;brief&#039;: _this.data.brief,\n      &#039;num&#039;: 1,\n      &#039;image_id&#039;: _this.data.image_id,\n      &#039;product_id&#039;: _this.data.id\n    };\n    var gifts = wx.getStorageSync(&#039;gifts&#039;) || [];\n    var _flag = false;\n    for(var i=0;i&lt;gifts.length;i++){\n      if (gifts[i].product_id == _this.data.id){\n          _flag=true\n        }\n    }\n    if(!_flag){\n      gifts.unshift(item);\n    }\n    wx.setStorageSync(&#039;gifts&#039;, gifts);\n    wx.reLaunch({\n      url: &#039;\/pages\/index\/index&#039;\n    })\n  },\n  \/**\n   * \u751f\u547d\u5468\u671f\u51fd\u6570--\u76d1\u542c\u9875\u9762\u52a0\u8f7d\n   *\/\n  onLoad: function (options) {\n    var _this = this;\n    wx.showLoading({\n      title: &#039;\u52a0\u8f7d\u4e2d&#039;,\n    });\n    wx.request({\n      url: app.globalData.apiDomain + &#039;\/api\/indexlist\/detailProduct&#039;,\n      data: {\n        product_id: options.id\n      },\n      header: {\n        &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n      },\n      method:&#039;POST&#039;,\n      success:function(res){\n        var imgUrl = &quot;imgUrls[0]&quot;\n        _this.setData({\n          [imgUrl]: res.data.data.image.m_url,\n          brief:res.data.data.brief,\n          name:res.data.data.name,\n          price:res.data.data.price,\n          image_id: res.data.data.image.image_id,\n          id:res.data.data.product_id\n        });\n        console.log(_this.data.imgUrls)\n        wx.hideLoading();\n      }\n    })\n  }\n})<\/code><\/pre>\n<h4>\u670d\u52a1\u7aef<\/h4>\n<p>1\u521b\u5efaproduct.detailProduct.as_view()\u8def\u7531,\u901a\u8fc7\u8bf7\u6c42\u4f20\u7684\u5546\u54c1id\uff0c\u8fd4\u56de\u8be5\u5546\u54c1\u7684\u8be6\u7ec6\u4fe1\u606f<\/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    url(r&#039;^api\/indexlist\/detailProduct$&#039;, product.detailProduct.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)\n\n#\u5546\u54c1\u8be6\u60c5\u63a5\u53e3\nclass detailProduct(APIView):\n    def post(self,request):\n        params = request.data\n        #\u5224\u65ad\u662f\u5426\u6709\u5546\u54c1id\n        if params[&#039;product_id&#039;]:\n            #\u83b7\u53d6\u8be5\u5546\u54c1\u7684\u6240\u6709\u4fe1\u606f\n            ret = models.Products.objects.get(product_id=params[&#039;product_id&#039;])\n            #\u5c06\u67e5\u8868\u6570\u636e\u5e8f\u5217\u5316\n            data_list = ProductsSerializer(instance=ret, many=False)\n            re_data = baseResponse.resdic(&quot;success&quot;, &quot;\u67e5\u8be2\u6210\u529f&quot;, data_list.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","protected":false},"excerpt":{"rendered":"<p>\u5546\u54c1\u8be6\u60c5\u9875 \u9700\u6c42\uff1a\u70b9\u51fb\u793c\u7269\uff0c\u8fdb\u5165\u793c\u7269\u8be6\u60c5\u9875\uff0c\u53ef\u4ee5\u70b9\u51fb\u7acb\u5373\u8d2d\u4e70\uff0c\u7136\u540e\u8fd4\u56de\u793c\u7269\u751f\u6210\u9875 \u5c0f\u7a0b\u5e8f\u7aef\uff1a app.json [&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\/3550"}],"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=3550"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/3550\/revisions"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3550"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}