开始使用Drf
填充goodsCategory数据
了解related_name
1531923553457.png
以淘宝为例子,我们会发现对于商品类别,在数据库设计的时候会出现一级商品类、二级商品类,还有三级商品类等等。
这个时候我们就要用到related_name (反向查询)

首先定义model类

这样之后我们去浏览我们的api会发现

parent_category下没有任何东西,他是作为父类的。就是说二级商品类并没有显示出来,这个时候我们需要去使用related_name
让他作为二级商品类去重新声名这个内容


三级商品类同样


注意:many= true必须加,他表示多条数据。不加会出现错误
获取单条详情

继承mixins.RetrieveModelMixin就可以了,其实他们就是一个



在地址栏中输入id就可以获取相应的内容了
跨域的问题(前后端分离)
文档
地址:https://github.com/ottoyiu/django-cors-headers
设置

添加APP

官方说'corsheaders.middleware.CorsMiddleware',这个必须放在'django.middleware.common.CommonMiddleware',这个前面

Middleware配置

设置为true
启动Vue
npm run dev 启动Vue项目

我们要根据Vue中匹配的url地址来写django项目中的url 或者根据django中的url来修改vue中的url地址,总之两个要相同
也就是我们需要启动这两个项目,在本地调试的过程中,Vue会从
http://127.0.0.1:8001/goods/GoodsCategory
这样类似的url地址中获取商品类别的信息。

他所匹配的地址是
http://127.0.0.1:8001/goods/categorys/id/或者http://127.0.0.1:8001/goods/categorys
步骤
1.首先我们要知道Vue会专门写一个api.js的接口


其中包括了各类从url地址栏中获取内容的方法
2.紧接着各类组件会去调用这些方法来获取数据

分为template script 以及style
其中template就是我们的模板。
style就是我们的样式。

这里获取商品类别列表,将数据赋值给AllMenuLabel

再在前台调用这些内容。
显示商品详情
每一个商品都有各自的一个id,当用户点击的时候,url中会出现不同的id号。根据api的方法请求相应的url地址。传到django中获取数据

比如我这里点击生鲜食品的一级类。他会传入一个363的id

在drf中生鲜食品所对应的id就是363

并且根据Vue中的api,他所请求的地址也是http://127.0.0.1:8000/goods/GoodsCategory/363/
这样正好做了一个映射
接下来实现显示商品的功能

更新地址

虽然已经能够显示内容,但是你会发现不论我们点击哪个,商品的内容始终无法根据类别发生改变
其实右上角52个商品已经表明,你所显示的是所有的商品,而不是部分商品,这时候我们要做筛选,即我们点击一级商品类,左边显示二级商品类,右边显示三级商品类内容。这些都有id控制。


网友评论