search
HomeBackend DevelopmentPython TutorialSPA example built with Django and Vue.js

In recent years, SPA (Single Page Application) has become a popular model of Web development. Compared with traditional multi-page applications, SPA is faster and smoother, and it is also more friendly and convenient for developers. This article will share an SPA example built based on Django and Vue.js, hoping to provide you with some reference and inspiration.

Django is a well-known Python Web framework with powerful back-end development capabilities. Vue.js is a lightweight JavaScript front-end framework that can help developers quickly build UI interactions while avoiding performance problems caused by DOM operations. Combining these two frameworks, we can build a powerful and user-friendly SPA application.

Let’s take a look at the specific implementation process.

Step one: Build Django backend

First, we need to create a backend project using Django. You can use Django's own command line tool to create a new project, such as:

$ django-admin startproject myproject

Then, we can use Django's model definition function to define the data structure we need. For example, if we want to develop a blog application, we can create an application named "Blog" and define a model named "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)

This model represents a blog post, including the title , content and release date three fields.

We also need to create a RESTful API interface for this model to facilitate front-end calls. You can use Django's DRF (Django Rest Framework) plug-in to create a standard RESTful view:

# 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

Here we have created two views, one is the PostList view for displaying the list of all articles, and the other is for displaying PostDetail view of single article details. Note that here we have introduced a file named "serializers.py", which contains the serializer of the Post model we defined, which is used to convert model instances into JSON format.

Step 2: Build the Vue.js front-end

With the back-end, we can start building the front-end. We create a new Vue.js project and add some necessary dependencies:

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

Here we use Vue Router and Vuex, Vue Router is used for routing management, and Vuex is used for state management.

Next, we create a new "Post" component to display the article list. You can create a file named "PostList.vue" in the "components" directory:

<!-- 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>

This code represents the display of the article list and obtains data from the back-end API through Axios.

Next, we need to set routing rules so that users can access the component. Routing rules can be added in the "index.js" file in the "router" directory:

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,
    },
  ],
});

Here we map the "/" path to our "PostList" component.

Step 3: Use Vuex for state management

The last function that needs to be implemented is state management. We need to store the data obtained from the backend API into Vuex and display it when needed. To do this, we first need to create a Vuex store:

// 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);
      });
    },
  },
});

Here we create a state attribute called "posts" and define the "SET_POSTS" operation to update the attribute.

Next, we need to connect the PostList component to the Vuex store for data acquisition and status updates:

<!-- 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>

Here we use the auxiliary functions "mapState" and "mapActions" provided by Vuex to Map Vuex states and actions into components. When the component is created, we get data from the API and update the state through the "fetchPosts" method.

So far, we have completed the integration of Django and Vue.js and built a complete SPA application. Run the application and access the "/" path to see the display effect of the article list.

Summary

This article introduces the process of how to use Django and Vue.js to build a SPA application. Compared with traditional multi-page applications, SPA can provide a better user experience and is easier to maintain and develop. I hope this example can provide you with some reference and inspiration, and I wish you go further and further on the road to web development!

The above is the detailed content of SPA example built with Django and Vue.js. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Python vs. C  : Understanding the Key DifferencesPython vs. C : Understanding the Key DifferencesApr 21, 2025 am 12:18 AM

Python and C each have their own advantages, and the choice should be based on project requirements. 1) Python is suitable for rapid development and data processing due to its concise syntax and dynamic typing. 2)C is suitable for high performance and system programming due to its static typing and manual memory management.

Python vs. C  : Which Language to Choose for Your Project?Python vs. C : Which Language to Choose for Your Project?Apr 21, 2025 am 12:17 AM

Choosing Python or C depends on project requirements: 1) If you need rapid development, data processing and prototype design, choose Python; 2) If you need high performance, low latency and close hardware control, choose C.

Reaching Your Python Goals: The Power of 2 Hours DailyReaching Your Python Goals: The Power of 2 Hours DailyApr 20, 2025 am 12:21 AM

By investing 2 hours of Python learning every day, you can effectively improve your programming skills. 1. Learn new knowledge: read documents or watch tutorials. 2. Practice: Write code and complete exercises. 3. Review: Consolidate the content you have learned. 4. Project practice: Apply what you have learned in actual projects. Such a structured learning plan can help you systematically master Python and achieve career goals.

Maximizing 2 Hours: Effective Python Learning StrategiesMaximizing 2 Hours: Effective Python Learning StrategiesApr 20, 2025 am 12:20 AM

Methods to learn Python efficiently within two hours include: 1. Review the basic knowledge and ensure that you are familiar with Python installation and basic syntax; 2. Understand the core concepts of Python, such as variables, lists, functions, etc.; 3. Master basic and advanced usage by using examples; 4. Learn common errors and debugging techniques; 5. Apply performance optimization and best practices, such as using list comprehensions and following the PEP8 style guide.

Choosing Between Python and C  : The Right Language for YouChoosing Between Python and C : The Right Language for YouApr 20, 2025 am 12:20 AM

Python is suitable for beginners and data science, and C is suitable for system programming and game development. 1. Python is simple and easy to use, suitable for data science and web development. 2.C provides high performance and control, suitable for game development and system programming. The choice should be based on project needs and personal interests.

Python vs. C  : A Comparative Analysis of Programming LanguagesPython vs. C : A Comparative Analysis of Programming LanguagesApr 20, 2025 am 12:14 AM

Python is more suitable for data science and rapid development, while C is more suitable for high performance and system programming. 1. Python syntax is concise and easy to learn, suitable for data processing and scientific computing. 2.C has complex syntax but excellent performance and is often used in game development and system programming.

2 Hours a Day: The Potential of Python Learning2 Hours a Day: The Potential of Python LearningApr 20, 2025 am 12:14 AM

It is feasible to invest two hours a day to learn Python. 1. Learn new knowledge: Learn new concepts in one hour, such as lists and dictionaries. 2. Practice and exercises: Use one hour to perform programming exercises, such as writing small programs. Through reasonable planning and perseverance, you can master the core concepts of Python in a short time.

Python vs. C  : Learning Curves and Ease of UsePython vs. C : Learning Curves and Ease of UseApr 19, 2025 am 12:20 AM

Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment