Vue展示商品分类数据
来自CloudWiki
vue前端接口
head/head.vue:
getMenu(){//获取菜单 getCategory({ params:{} }).then((response)=> { console.log(response) this.allMenuLabel = response.data }) .catch(function (error) { console.log(error); }); },
其中getCategory又是由api/api.js 所定义的。
let host = 'http://shop.projectsedu.com'; //获取商品类别信息 export const queryCategorygoods = params => { return axios.get(`${host}/indexgoods/`) } //获取首页中的新品 export const newGoods = params => { return axios.get(`${host}/newgoods/`) } //获取轮播图 export const bannerGoods = params => { return axios.get(`${host}/banners/`) } //获取商品类别信息 export const getCategory = params => { if('id' in params){ return axios.get(`${host}/categorys/`+params.id+'/'); } else { return axios.get(`${host}/categorys/`, params); } };
上方的host 表示主机名,这里是远程的主机。
为了便于调试,我们可以在上方的host下面添加localhost变量,以测试本地的接口
并先在getCategory 里将host替换为localhost ,其中10.0.0.30为本机ip
let host = 'http://shop.projectsedu.com'; let local_host = 'http://10.0.0.30:8000'; //获取商品类别信息 export const queryCategorygoods = params => { return axios.get(`${host}/indexgoods/`) } //获取首页中的新品 export const newGoods = params => { return axios.get(`${host}/newgoods/`) } //获取轮播图 export const bannerGoods = params => { return axios.get(`${host}/banners/`) } //获取商品类别信息 export const getCategory = params => { if('id' in params){ return axios.get(`${local_host}/categorys/`+params.id+'/'); } else { return axios.get(`${local_host}/categorys/`, params); } };
测试:http://10.0.0.30:8080/#/app/home/index
显示如下错误,原因是浏览器禁止跨域引起的,可以从服务端去配置一下。
服务端配置跨域
https://github.com/adamchainz/django-cors-headers
pip3 install django-cors-headers==2.1.0
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'DjangoUeditor', 'users.apps.UsersConfig', 'goods.apps.GoodsConfig', 'trade.apps.TradeConfig', 'user_operation.apps.UserOperationConfig', 'crispy_forms', 'django_filters', 'xadmin', 'rest_framework', 'corsheaders', ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] CORS_ORIGIN_ALLOW_ALL= True
注意:Also if you are using CORS_REPLACE_HTTPS_REFERER it should be placed before Django's CsrfViewMiddleware (如上所示)
现在再次测试,跨域访问已经可以了,
现在可以访问本地的类别接口 10.0.0.30:8000/categorys/
导航栏中类别的出现
现在导航栏中的类别没有出现,
这个需要在后台设置