cari
Rumahpembangunan bahagian belakangTutorial PythonContoh SPA dibina dengan Django dan Vue.js

Dalam beberapa tahun kebelakangan ini, SPA (Aplikasi Halaman Tunggal) telah menjadi model pembangunan web yang popular. Berbanding dengan aplikasi berbilang halaman tradisional, SPA lebih pantas dan lancar, dan ia juga lebih mesra dan mudah untuk pembangun. Artikel ini akan berkongsi contoh SPA yang dibina berdasarkan Django dan Vue.js, dengan harapan dapat memberi anda sedikit rujukan dan inspirasi.

Django ialah rangka kerja Web Python yang terkenal dengan keupayaan pembangunan bahagian belakang yang berkuasa. Vue.js ialah rangka kerja bahagian hadapan JavaScript ringan yang boleh membantu pembangun membina interaksi UI dengan cepat sambil mengelakkan masalah prestasi yang disebabkan oleh operasi DOM. Menggabungkan kedua-dua rangka kerja ini, kami boleh membina aplikasi SPA yang berkuasa dan mesra pengguna.

Mari kita lihat proses pelaksanaan khusus.

Langkah 1: Bina bahagian belakang Django

Pertama, kita perlu mencipta projek bahagian belakang menggunakan Django. Anda boleh menggunakan alat baris arahan Django sendiri untuk mencipta projek baharu, seperti:

$ django-admin startproject myproject

Kemudian, kita boleh menggunakan fungsi definisi model Django untuk mentakrifkan struktur data yang kita perlukan. Sebagai contoh, jika kita ingin membangunkan aplikasi blog, kita boleh membuat aplikasi bernama "Blog" dan menentukan model bernama "Post":

# blog/models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)

Model ini mewakili catatan blog, termasuk tajuk , kandungan dan tarikh keluaran tiga medan.

Kami juga perlu mencipta antara muka API RESTful untuk model ini bagi memudahkan panggilan hadapan. Anda boleh menggunakan pemalam DRF (Django Rest Framework) Django untuk mencipta paparan RESTful standard:

# blog/views.py
from rest_framework import generics
from .models import Post
from .serializers import PostSerializer

class PostList(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

class PostDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

Di sini kami telah mencipta dua paparan, satu ialah paparan PostList untuk memaparkan senarai semua artikel dan satu lagi adalah untuk memaparkan paparan PostDetail bagi butiran artikel tunggal. Ambil perhatian bahawa di sini kami telah memperkenalkan fail bernama "serializers.py", yang mengandungi serializer model Post yang kami takrifkan, yang digunakan untuk menukar contoh model kepada format JSON.

Langkah 2: Bina bahagian hadapan Vue.js

Dengan bahagian belakang dipasang, kita boleh mula membina bahagian hadapan. Kami mencipta projek Vue.js baharu dan menambah beberapa kebergantungan yang diperlukan:

$ vue init webpack myapp
$ cd myapp
$ npm install --save axios vue-router vuex

Di sini kami menggunakan Vue Router dan Vuex, Vue Router digunakan untuk pengurusan penghalaan dan Vuex digunakan untuk pengurusan negeri.

Seterusnya, kami mencipta komponen "Siaran" baharu untuk memaparkan senarai artikel. Anda boleh mencipta fail bernama "PostList.vue" dalam direktori "komponen":

<!-- PostList.vue -->
<template>
  <div>
    <div v-for="post in posts" :key="post.id">
      <h3 id="post-title">{{ post.title }}</h3>
      <p>{{ post.content }}</p>
    </div>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      posts: [],
    };
  },
  created() {
    axios
      .get('/api/posts/')
      .then(response => {
        this.posts = response.data;
      })
      .catch(error => {
        console.log(error);
      });
  },
};
</script>

Kod ini mewakili paparan senarai artikel dan mendapatkan data daripada API bahagian belakang melalui Axios.

Seterusnya, kita perlu menetapkan peraturan penghalaan supaya pengguna boleh mengakses komponen tersebut. Peraturan penghalaan boleh ditambah dalam fail "index.js" di bawah direktori "router":

import Vue from 'vue';
import Router from 'vue-router';
import PostList from '@/components/PostList';

Vue.use(Router);

export default new Router({
  routes: [
    {
      path: '/',
      name: 'PostList',
      component: PostList,
    },
  ],
});

Di sini kami memetakan laluan "/" ke komponen "PostList" kami.

Langkah 3: Gunakan Vuex untuk pengurusan negeri

Fungsi terakhir yang perlu dilaksanakan ialah pengurusan negeri. Kami perlu menyimpan data yang diperoleh daripada API bahagian belakang ke dalam Vuex dan memaparkannya apabila diperlukan. Untuk melakukan ini, kita perlu membuat kedai Vuex terlebih dahulu:

// store.js
import Vue from 'vue';
import Vuex from 'vuex';
import axios from 'axios';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    posts: [],
  },
  mutations: {
    SET_POSTS(state, posts) {
      state.posts = posts;
    },
  },
  actions: {
    fetchPosts({ commit }) {
      return axios.get('/api/posts/').then(({ data }) => {
        commit('SET_POSTS', data);
      });
    },
  },
});

Di sini kita mencipta sifat negeri yang dipanggil "siaran" dan mentakrifkan operasi "SET_POSTS" untuk mengemas kini harta tersebut.

Seterusnya, kami perlu menyambungkan komponen PostList ke gedung Vuex untuk pemerolehan data dan kemas kini status:

<!-- PostList.vue -->
<template>
  <div>
    <div v-for="post in posts" :key="post.id">
      <h3 id="post-title">{{ post.title }}</h3>
      <p>{{ post.content }}</p>
    </div>
  </div>
</template>

<script>
import { mapState, mapActions } from 'vuex';

export default {
  computed: mapState(['posts']),
  created() {
    this.fetchPosts();
  },
  methods: mapActions(['fetchPosts']),
};
</script>

Di sini kami menggunakan fungsi tambahan "mapState" dan "mapActions" yang disediakan oleh Vuex untuk Petakan keadaan dan tindakan Vuex ke dalam komponen. Apabila komponen dibuat, kami mendapat data daripada API dan mengemas kini keadaan melalui kaedah "fetchPosts".

Pada ketika ini, kami telah menyelesaikan penyepaduan Django dan Vue.js dan membina aplikasi SPA yang lengkap. Jalankan aplikasi dan akses laluan "/" untuk melihat kesan paparan senarai artikel.

Ringkasan

Artikel ini memperkenalkan proses cara menggunakan Django dan Vue.js untuk membina aplikasi SPA. Berbanding dengan aplikasi berbilang halaman tradisional, SPA boleh memberikan pengalaman pengguna yang lebih baik dan lebih mudah untuk diselenggara dan dibangunkan. Saya harap contoh ini dapat memberi anda sedikit rujukan dan inspirasi, dan saya berharap anda pergi lebih jauh dalam pembangunan web!

Atas ialah kandungan terperinci Contoh SPA dibina dengan Django dan Vue.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apakah sebab -sebab umum mengapa skrip python mungkin tidak dilaksanakan pada UNIX?Apakah sebab -sebab umum mengapa skrip python mungkin tidak dilaksanakan pada UNIX?Apr 28, 2025 am 12:18 AM

Sebab -sebab mengapa skrip Python tidak dapat dijalankan pada sistem Unix termasuk: 1) kebenaran yang tidak mencukupi, menggunakan chmod xyour_script.py untuk memberikan kebenaran pelaksanaan; 2) garis shebang yang tidak betul atau hilang, anda harus menggunakan #!/Usr/bin/envpython; 3) tetapan pembolehubah persekitaran yang salah, anda boleh mencetak debugging os.environ; 4) Menggunakan versi Python yang salah, anda boleh menentukan versi pada garis Shebang atau baris arahan; 5) masalah pergantungan, menggunakan persekitaran maya untuk mengasingkan ketergantungan; 6) Kesalahan sintaks, gunakan python-mpy_compileyour_script.py untuk mengesan.

Berikan contoh senario di mana menggunakan array python akan lebih sesuai daripada menggunakan senarai.Berikan contoh senario di mana menggunakan array python akan lebih sesuai daripada menggunakan senarai.Apr 28, 2025 am 12:15 AM

Menggunakan tatasusunan python lebih sesuai untuk memproses sejumlah besar data berangka daripada senarai. 1) Array menjimatkan lebih banyak memori, 2) array lebih cepat untuk beroperasi dengan nilai berangka, 3) Arrays Force Jenis Konsistensi, 4) Array bersesuaian dengan array C, tetapi tidak fleksibel dan mudah seperti senarai.

Apakah implikasi prestasi menggunakan senarai berbanding tatasusunan dalam python?Apakah implikasi prestasi menggunakan senarai berbanding tatasusunan dalam python?Apr 28, 2025 am 12:10 AM

Listsare yang lebih baik lebih baik foreflexibilityandmixdatatatypes, whilearraysares sand sumerical sand sand sand lared datasets.1) Senarai yang tidak dapat diselaraskan xibility, mixeddatatypes, dan elementChanges.2) Operasi sensori UsArray, LargedataSet, dan WhenmememoryefficyFiciency.2

Bagaimanakah Numpy mengendalikan pengurusan memori untuk tatasusunan besar?Bagaimanakah Numpy mengendalikan pengurusan memori untuk tatasusunan besar?Apr 28, 2025 am 12:07 AM

NumpyManagesMemoryforlargeArraySefficientlyusingViews, salinan, danMemory-mappedfiles.1) viewSallowSlicingWithoutCopying, secara langsungModifyingTheoriginalArray.2) copiescanbecreatedwithTheCopy () methorpreserveservervesvesverdata.3) MemoriSberServervesvesves

Yang memerlukan mengimport modul: senarai atau tatasusunan?Yang memerlukan mengimport modul: senarai atau tatasusunan?Apr 28, 2025 am 12:06 AM

Listsinpythondonotrequireimportingamodule, whilearraysfromthearraymoduledoneedanimport.1) listsarebuilt-in, serba boleh, dancanholdmixeddatatypes.2) arraysaremorememory-efficientfornumericydatabuTabeSflexible, yang tidak dapat dilupakan.

Apakah jenis data yang boleh disimpan dalam array python?Apakah jenis data yang boleh disimpan dalam array python?Apr 27, 2025 am 12:11 AM

Pythonlistscanstoreanydatatype, arraymoduleArraysstoreonetype, andnumpyarraysarefornumumericalcomputations.1) listsareversatileButlessMememory-efficient.2) arraymoduleArduleArrayRaysarememory-efficientforhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogen

Apa yang berlaku jika anda cuba menyimpan nilai jenis data yang salah dalam array python?Apa yang berlaku jika anda cuba menyimpan nilai jenis data yang salah dalam array python?Apr 27, 2025 am 12:10 AM

KetikayyoUttemptToStoreAveFheWrongatatypeinapythonArray, anda akan menjadicounteratypeerror

Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array?Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array?Apr 27, 2025 am 12:03 AM

Pythonlistsarepartofthestandardlibrary, sementara

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular