使用django和vue进行数据交互的方法步骤

这篇文章主要介绍了使用django和vue进行数据交互的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、前端请求的封装

1.将请求地址封装起来,以便日后修改,在src/assets/js目录下创建getPath.js文件

 export default function getUrl(str) {   let url = 'http://localhost:8000/' + str;   return url; } 

2.在同一个目录下创建axios.js文件

我的前端数据交互使用的模块使用的是axios

 import axios from 'axios' import getUrl from './getPath' export default { 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); }) } } //状态检测 let stateDetection = (data, callback) => { let status = data.status_code; switch (status) { case 102: break; case 103: alert(data.content); break; case 404: window.location.href = data.url; break; } } 

二、前端Get请求使用

1.在src/store/目录下的ArchiveStore.js文件引入axios模块

 import axios from '../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); let data = 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方法即可

 

在这里要注意的是使用activated生命周期函数,该函数会在keep-alive,组件被激活时调用

三、后端Get请求使用

1.在urls.py(djangoBlog)文件下面引入views.py里面的方法

 from blog.views import * 

2.注册url

 from blog.views import * urlpatterns = [ url(r'^get_article_specific/$', getArticleSpecific, name='get_article_specific'), ] 

3.在views.py里面导入需要用到的模块和models

 from blog.models import * from django.http import JsonResponse from django.db.models.functions import TruncDate

4.在views.py里面添加getArticleSpecific方法

 #得到文章详情 def getArticleSpecific(request): results={} #得到标签数组 temp=list(Article.objects.get(id=request.GET['id']).tag.values_list('name') ) results['tags']=[] #处理标签数组的格式 for value in temp: 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 return JsonResponse(results, safe=False) 

以上就是使用django和vue进行数据交互的方法步骤的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » python