使用django和vue怎么实现数据交互
使用django和vue怎么实现数据交互?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
一、前端请求的封装
1.将请求地址封装起来,以便日后修改,在src/assets/js目录下创建getPath.js文件
exportdefaultfunctiongetUrl(str){
leturl='http://localhost:8000/'+str;
returnurl;
}2.在同一个目录下创建axios.js文件
我的前端数据交互使用的模块使用的是axios
importaxiosfrom'axios'
importgetUrlfrom'./getPath'
exportdefault{
Get:(config)=>{
axios({
methods:"get",
url:getUrl(config.url),
params:config.params
}).then((res)=>{
stateDetection(res);
config.callback&&config.callback(res);
})
},
Post:()=>{
axios({
methods:"post",
url:getUrl(config.url)
}).then((res)=>{
stateDetection(res);
config.callback&&config.callback(res);
})
}
}
//状态检测
letstateDetection=(data,callback)=>{
letstatus=data.status_code;
switch(status){
case102:
break;
case103:
alert(data.content);
break;
case404:
window.location.href=data.url;
break;
}
}二、前端Get请求使用
1.在src/store/目录下的ArchiveStore.js文件引入axios模块
importaxiosfrom'../assets/js/axios'
2.在src/store/目录下的ArchiveStore.js文件里的state添加文章详情的数据结构
specific:{
browse:0,
content:'',
title:'',
date:'',
tags:[]
},//文章详情3.在src/store/目录下的ArchiveStore.js文件里创建一个action方法
getArticlesSpecific({commit,state},id){//得到指定文章详情
axios.Get({
url:'get_article_specific',
params:{
id:id
},
callback:(res)=>{
//console.log(res);
letdata=res.data
state.specific={
browse:data['browse'],
content:data['content'],
title:data['title'],
date:data['date'],
tags:data['tags']
}
state.loading=false;
//specific
}
})
}4.在文章详情页面Specificartical.vue(src/components)下执行getArticlesSpecific方法即可
<template>
<divclass="specificarticalborderStylecontainer">
<h2class='title'>{{specific.title}}</h2>
<divclass='content'>
<div><spanclass='annotation'><i></i>{{specific.date}}</span>/
<spanclass='annotation'><i></i>{{specific.browse}}</span>/
<div>{{specific.content}}</div>
<divclass='attention'><i>@</i></div>
<divclass='lable'><i>*</i><av-for="(tag,index)inspecific.tags":key="index">{{index!=0?',':''}}{{tag}}</a></div>
</div>
</div>
</template>
<script>
import{mapState,mapActions}from'vuex'
exportdefault{
name:'specificartical',
computed:{
...mapState({
specific:state=>state.ArchiveStore.specific,
})
},
methods:{
...mapActions([
'getArticlesSpecific'
]),
},
activated:function(){this.getArticlesSpecific(this.$route.params.id);
}
}
</script>在这里要注意的是使用activated生命周期函数,该函数会在keep-alive,组件被激活时调用
三、后端Get请求使用
1.在urls.py(djangoBlog)文件下面引入views.py里面的方法
fromblog.viewsimport*
2.注册url
fromblog.viewsimport* urlpatterns=[ url(r'^get_article_specific/$',getArticleSpecific,name='get_article_specific'), ]
3.在views.py里面导入需要用到的模块和models
fromblog.modelsimport* fromdjango.httpimportJsonResponse fromdjango.db.models.functionsimportTruncDate
4.在views.py里面添加getArticleSpecific方法
#得到文章详情
defgetArticleSpecific(request):
results={}
#得到标签数组
temp=list(Article.objects.get(id=request.GET['id']).tag.values_list('name'))
results['tags']=[]
#处理标签数组的格式
forvalueintemp:
results['tags'].append(value[0])
#得到文章详情
data=Article.objects.annotate(date=TruncDate('create_time')).values('title','content','browse','date').get(id=request.GET['id'])
results['browse']=data['browse']
results['title']=data['title']
results['content']=data['content']
results['date']=data['date']
results['status_code']=102
returnJsonResponse(results,safe=False)看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。
推荐阅读
-
浅析Django接口版本控制
浅析Django接口版本控制一、前言在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请...
-
Django+Celery实现定时任务的示例
Django+Celery实现定时任务的示例目录一、前言二、配置使用定义与触发任务扩展三、Django中使用定时任务二次开...
-
Python(django中如何使用restful框架)
Python,django中如何使用restful框架在使用django进行前后台分离开发时通常会搭配django-res...
-
Django实现drf搜索过滤和排序过滤
Django实现drf搜索过滤和排序过滤前言当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。搜...
-
Django中怎么将ValuesQuerySet转换成json
今天就跟大家聊聊有关Django中怎么将ValuesQuerySet转换成json,可能很多人都不太了解,为了让大家更加了解,小编...
-
Django分页器的使用方法
这篇文章主要介绍了Django分页器的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面...
-
Python Django搭建文件下载服务器的实现shili
这篇文章主要介绍PythonDjango搭建文件下载服务器的实现shili,文中介绍的非常详细,具有一定的参考价值,感兴趣的小...
-
在Django中如何使用MQTT的方法
这篇文章主要介绍了在Django中如何使用MQTT的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有...
-
Django开发RESTful API怎么实现增删改查
小编给大家分享一下Django开发RESTfulAPI怎么实现增删改查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一...
-
Django如何显示可视化图表的实践
这篇文章主要介绍Django如何显示可视化图表的实践,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一实战1...
