使用django和vue進(jìn)行數(shù)據(jù)交互的方法步驟
一、前端請求的封裝
1.將請求地址封裝起來,以便日后修改,在src/assets/js目錄下創(chuàng)建getPath.js文件
export default function getUrl(str) {
let url = 'http://localhost:8000/' + str;
return url;
}
2.在同一個(gè)目錄下創(chuàng)建axios.js文件
我的前端數(shù)據(jù)交互使用的模塊使用的是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);
})
}
}
//狀態(tài)檢測
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添加文章詳情的數(shù)據(jù)結(jié)構(gòu)
specific: {
browse: 0,
content: '',
title: '',
date: '',
tags: []
}, //文章詳情
3.在src/store/目錄下的ArchiveStore.js文件里創(chuàng)建一個(gè)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)下執(zhí)行g(shù)etArticlesSpecific方法即可
<template>
<div class="specificartical borderStyle container" >
<h1 class='title'>{{specific.title}} </h1>
<div class='content'>
<div><span class='annotation'><i></i>{{specific.date}}</span>/
<span class='annotation'><i></i>{{specific.browse}}</span>/
<div>{{specific.content}}</div>
<div class='attention'><i>@</i></div>
<div class='lable'><i>*</i><a v-for="(tag,index) in specific.tags" :key="index">{{index!=0?',':''}}{{tag}}</a></div>
</div>
</div>
</template>
<script>
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);
}
}
</script>
在這里要注意的是使用activated生命周期函數(shù),該函數(shù)會(huì)在keep-alive,組件被激活時(shí)調(diào)用
三、后端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里面導(dǎo)入需要用到的模塊和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={}
#得到標(biāo)簽數(shù)組
temp=list(Article.objects.get(id=request.GET['id']).tag.values_list('name') )
results['tags']=[]
#處理標(biāo)簽數(shù)組的格式
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)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python圖像處理庫Pillow處理圖像文件的案例分析
本文將通過使用Python圖像處理庫Pillow,幫助大家進(jìn)一步了解Python的基本概念:模塊、對象、方法和函數(shù)的使用,文中代碼講解的非常詳細(xì),需要的朋友可以參考下2023-07-07
Python使用技巧之實(shí)現(xiàn)Excel轉(zhuǎn)為PDF
這篇文章主要為大家詳細(xì)介紹了使用第三方Python庫Spire.XLS?for?Python?實(shí)現(xiàn)Excel轉(zhuǎn)PDF的簡單方法,文中的示例代碼講解詳細(xì),需要的可以參考下2023-11-11
如何用 Python 子進(jìn)程關(guān)閉 Excel 自動(dòng)化中的彈窗
這篇文章主要介紹了如何用 Python 子進(jìn)程關(guān)閉 Excel 自動(dòng)化中的彈窗,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-05-05
pyinstaller打包后偶爾出現(xiàn)黑窗口一閃而過的問題及解決
這篇文章主要介紹了pyinstaller打包后偶爾出現(xiàn)黑窗口一閃而過的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
django框架model orM使用字典作為參數(shù),保存數(shù)據(jù)的方法分析
這篇文章主要介紹了django框架model orM使用字典作為參數(shù),保存數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了字典參數(shù)結(jié)合django model實(shí)現(xiàn)保存數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
python中的內(nèi)置函數(shù)getattr()介紹及示例
其實(shí)getattr()這個(gè)方法最主要的作用是實(shí)現(xiàn)反射機(jī)制。也就是說可以通過字符串獲取方法實(shí)例。這樣,你就可以把一個(gè)類可能要調(diào)用的方法放在配置文件里,在需要的時(shí)候動(dòng)態(tài)加載。2014-07-07

