Terminalウィンドウ二つを用意してください。
一つには
python manage.py runserver 8001
を実行してください。これで Django 開発用サーバーがポート 8001 で実行し始めます。
もう一つには
npm run serve -- --port 8000
を実行してください。これで Vue 開発用サーバがポート 8000 で実行し始めます。
Vue.js の方で axios を用いて Django に請求を発信するのはこのようです。
ルータを設定して、ページ Main を表示するようにします。
javascript
1// proj/src/router.js
2import Vue from 'vue'
3import Router from 'vue-router'
4
5import Main from '@/components/pages/Main'
6
7Vue.use(Router)
8
9export default new Router({
10 routes: [
11 {
12 path: '/',
13 name: 'Main',
14 component: Main
15 }
16 ]
17})
vue
1// proj/src/App.vue
2<template>
3 <v-app>
4 <router-view/>
5 </v-app>
6</template>
7
8<script>
9export default {
10 name: 'App'
11}
12</script>
ページ Main の script の中に、methods オブジェクトに fetchData のような関数を入れて、その中で axios を用いて Django へ発信します。取得した結果を this.data とかに詰め込んだら、template に {{ data }} のように表示できます。
fetchData 関数は自動的に実行したいなら、下記のように mounted() 関数や created() 関数に実行してください。他にボタンの @click に入れたらボタンを押す時や、イベントで実行するようにも設定できます。
vue
1// proj/src/components/pages/Main.vue
2<template>
3<p>{{ data }}<p>
4</template>
5
6<script>
7import axios from 'axios';
8import router from "../../router";
9export default {
10 name: "Main",
11 data() {
12 return {
13 pending: true,
14 data: "Loading"
15 }
16 },
17 mounted() {
18 this.fetchData();
19 },
20 methods: {
21 fetchData() {
22 axios.get("https://localhost:8001/api/hello/")
23 .then(res => this.data = res.data)
24 .catch(e => console.log(e));
25 }
26 }
27};
28</script>
そのブログシリーズの次には、ユーザー認証の例について詳しく書いてありますが、上記のようにまとめました。お役に立てれば幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/15 06:15 編集