一、前端请求的封装
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方法即可
<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"color: #ff0000">三、后端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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“使用django和vue进行数据交互的方法步骤”评论...
更新动态
2025年11月05日
2025年11月05日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]