当前位置:   article > 正文

python django vue教程_使用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方法即可

{{specific.title}}

{{specific.date}}/

{{specific.browse}}/

{{specific.content}}
@
* {{index!=0?',':''}}{{tag}}

import {mapState, mapActions} from 'vuex'

export default {

name: 'specificartical',

computed: {

...mapState({

specific:state=>state.ArchiveStore.specific,

})

},

methods:{

...mapActions([

'getArticlesSpecific'

]),

},

activated:function(){this.getArticlesSpecific(this.$route.params.id);

}

}

在这里要注意的是使用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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/66584
推荐阅读
相关标签
  

闽ICP备14008679号