91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用django和vue怎么實現數據交互

發布時間:2021-03-23 15:42:09 來源:億速云 閱讀:131 作者:Leah 欄目:開發技術

使用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方法即可

<template>
 <div class="specificartical borderStyle container" >
  <h2 class='title'>{{specific.title}} </h2>
  <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)

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永福县| 平原县| 襄城县| 永济市| 香河县| 荥经县| 思南县| 神农架林区| 剑阁县| 安多县| 清丰县| 读书| 绿春县| 夏津县| 时尚| 郧西县| 固原市| 项城市| 玉溪市| 大洼县| 枣庄市| 白水县| 城固县| 云林县| 文水县| 平湖市| 通州市| 赤峰市| 法库县| 土默特右旗| 郎溪县| 上栗县| 江都市| 开鲁县| 米泉市| 潼关县| 蒲江县| 安远县| 林口县| 卓尼县| 弋阳县|