Home Backend Development Python Tutorial SPA example built with Django and Vue.js

SPA example built with Django and Vue.js

Jun 18, 2023 pm 07:27 PM
spa django vuejs

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
Copy after login

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)
Copy after login

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
Copy after login

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
Copy after login

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>{{ 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>
Copy after login

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

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);
      });
    },
  },
});
Copy after login

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>{{ 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>
Copy after login

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 of this Website
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

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

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to check django version How to check django version Dec 01, 2023 pm 02:25 PM

Steps to check the Django version: 1. Open a terminal or command prompt window; 2. Make sure Django has been installed. If Django is not installed, you can use the package management tool to install it and enter the pip install django command; 3. After the installation is complete , you can use python -m django --version to check the Django version.

Django vs. Flask: A comparative analysis of Python web frameworks Django vs. Flask: A comparative analysis of Python web frameworks Jan 19, 2024 am 08:36 AM

Django and Flask are both leaders in Python Web frameworks, and they both have their own advantages and applicable scenarios. This article will conduct a comparative analysis of these two frameworks and provide specific code examples. Development Introduction Django is a full-featured Web framework, its main purpose is to quickly develop complex Web applications. Django provides many built-in functions, such as ORM (Object Relational Mapping), forms, authentication, management backend, etc. These features allow Django to handle large

Django Framework Pros and Cons: Everything You Need to Know Django Framework Pros and Cons: Everything You Need to Know Jan 19, 2024 am 09:09 AM

Django is a complete development framework that covers all aspects of the web development life cycle. Currently, this framework is one of the most popular web frameworks worldwide. If you plan to use Django to build your own web applications, then you need to understand the advantages and disadvantages of the Django framework. Here's everything you need to know, including specific code examples. Django advantages: 1. Rapid development-Djang can quickly develop web applications. It provides a rich library and internal

How to upgrade Django version: steps and considerations How to upgrade Django version: steps and considerations Jan 19, 2024 am 10:16 AM

How to upgrade Django version: steps and considerations, specific code examples required Introduction: Django is a powerful Python Web framework that is continuously updated and upgraded to provide better performance and more features. However, for developers using older versions of Django, upgrading Django may face some challenges. This article will introduce the steps and precautions on how to upgrade the Django version, and provide specific code examples. 1. Back up project files before upgrading Djan

What is the difference between django versions? What is the difference between django versions? Nov 20, 2023 pm 04:33 PM

The differences are: 1. Django 1.x series: This is an early version of Django, including versions 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8 and 1.9. These versions mainly provide basic web development functions; 2. Django 2.x series: This is the mid-term version of Django, including 2.0, 2.1, 2.2 and other versions; 3. Django 3.x series: This is the latest version series of Django. Including versions 3.0, 3, etc.

How to check django version How to check django version Nov 30, 2023 pm 03:08 PM

How to check the django version: 1. To check through the command line, enter the "python -m django --version" command in the terminal or command line window; 2. To check in the Python interactive environment, enter "import django print(django. get_version())" code; 3. Check the settings file of the Django project and find a list named INSTALLED_APPS, which contains installed application information.

Is django front-end or back-end? Is django front-end or back-end? Nov 21, 2023 pm 02:36 PM

django is the backend. Details: Although Django is primarily a backend framework, it is closely related to front-end development. Through features such as Django's template engine, static file management, and RESTful API, front-end developers can collaborate with back-end developers to build powerful, scalable web applications.

Django, Flask, and FastAPI: Which framework is right for beginners? Django, Flask, and FastAPI: Which framework is right for beginners? Sep 27, 2023 pm 09:06 PM

Django, Flask, and FastAPI: Which framework is right for beginners? Introduction: In the field of web application development, there are many excellent Python frameworks to choose from. This article will focus on the three most popular frameworks, Django, Flask and FastAPI. We will evaluate their features and discuss which framework is best for beginners to use. At the same time, we will also provide some specific code examples to help beginners better understand these frameworks. 1. Django: Django

See all articles