一、前端请求的封装
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?',':''}}{{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生命周期函数,该函数会在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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
问题内容: 我对swig中的typemap和如何使用数组感到迷茫。我准备了一个使用swig在java和c之间使用数组的工作示例,但是我不知道这是否是正确的方法。 基本上,我想将字节数组从Java 传递给c作为“ signed char *” +它的大小,在c中对其进行修改并查看java中的更改,并在c中创建一个数组并在Java中使用它。 *在C中被修改为Java或其他的缓冲区?](http://c
本文向大家介绍vue结合axios与后端进行ajax交互的方法,包括了vue结合axios与后端进行ajax交互的方法的使用技巧和注意事项,需要的朋友参考一下 以前vue官方推荐的ajax库是vue-resource, 现在改为axios axios的github仓库 实现的效果: 异步请求 页面异步发出get请求获取数据,提交表单异步post数据到服务端 客户端 客户端代码 代码解析: 服务端
本文向大家介绍Django 使用Ajax进行前后台交互的示例讲解,包括了Django 使用Ajax进行前后台交互的示例讲解的使用技巧和注意事项,需要的朋友参考一下 本文要实现的功能是:根据下拉列表的选项将数据库中对应的内容显示在页面,选定要排除的选项后,提交剩余的选项到数据库。 为了方便前后台交互,利用了Ajax的GET和POST方法分别进行数据的获取和提交。 代码如下: 部分html代码为: v
本文向大家介绍你有使用做过vue与原生app交互吗?说说vue与ap交互的方法相关面试题,主要包含被问及你有使用做过vue与原生app交互吗?说说vue与ap交互的方法时的应答技巧和注意事项,需要的朋友参考一下 用WebViewJavascriptBridge
问题内容: 嗨,我正在使用elasticsearchSpring数据。我项目的领域结构不断变化,因此我必须删除索引才能每次更改映射。为了克服这个问题,我使用了别名。我使用以下方法创建了别名: 我有一个测试课: TestRepository类: 我的问题是如何从别名而不是索引本身读取?是否对别名也进行写操作。我看过以下链接:https : //www.elastic.co/guide/en/elas
前端请求流程 在 vue-element-admin 中,一个完整的前端 UI 交互到服务端处理流程是这样的: UI 组件交互操作; 调用统一管理的 api service 请求函数; 使用封装的 request.js 发送请求; 获取服务端返回; 更新 data; 从上面的流程可以看出,为了方便管理维护,统一的请求处理都放在 @/api 文件夹中,并且一般按照 model 纬度进行拆分文件,如: