백엔드 개발 파이썬 튜토리얼 Django 및 Vue.js로 구축된 SPA 예제

Django 및 Vue.js로 구축된 SPA 예제

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

최근에는 SPA(Single Page Application)가 웹 개발의 인기 모델이 되었습니다. 기존의 다중 페이지 애플리케이션에 비해 SPA는 더 빠르고 원활하며 개발자에게도 더 친숙하고 편리합니다. 이 기사에서는 Django와 Vue.js를 기반으로 구축된 SPA 예제를 공유하여 여러분에게 참고 자료와 영감을 제공할 것입니다.

Django는 강력한 백엔드 개발 기능을 갖춘 잘 알려진 Python 웹 프레임워크입니다. Vue.js는 개발자가 DOM 작업으로 인한 성능 문제를 피하면서 UI 상호 작용을 신속하게 구축하는 데 도움을 줄 수 있는 경량 JavaScript 프런트 엔드 프레임워크입니다. 이 두 프레임워크를 결합하면 강력하고 사용자 친화적인 SPA 애플리케이션을 구축할 수 있습니다.

구체적인 구현 과정을 살펴보겠습니다.

1단계: Django 백엔드 구축

먼저 Django를 사용하여 백엔드 프로젝트를 생성해야 합니다. Django의 자체 명령줄 도구를 사용하여 다음과 같은 새 프로젝트를 만들 수 있습니다.

$ django-admin startproject myproject
로그인 후 복사

그런 다음 Django의 모델 정의 기능을 사용하여 필요한 데이터 구조를 정의할 수 있습니다. 예를 들어, 블로그 애플리케이션을 개발하려는 경우 "Blog"라는 애플리케이션을 만들고 "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)
로그인 후 복사

이 모델은 제목, 콘텐츠 및 게시 날짜 3개 필드를 포함하여 블로그 게시물을 나타냅니다.

프런트 엔드 호출을 용이하게 하려면 이 모델에 대한 RESTful API 인터페이스도 만들어야 합니다. Django의 DRF(Django Rest Framework) 플러그인을 사용하여 표준 RESTful 보기를 만들 수 있습니다.

# 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
로그인 후 복사

여기서는 두 개의 보기를 만들었습니다. 하나는 모든 기사 목록을 표시하는 PostList 보기이고 다른 하나는 단일 기사 PostDetail 보기의 세부정보입니다. 여기에는 모델 인스턴스를 JSON 형식으로 변환하는 데 사용되는 우리가 정의한 Post 모델의 직렬 변환기가 포함된 "serializers.py"라는 파일이 도입되었습니다.

2단계: Vue.js 프런트엔드 구축

백엔드가 준비되면 프런트엔드 구축을 시작할 수 있습니다. 새로운 Vue.js 프로젝트를 생성하고 몇 가지 필요한 종속성을 추가합니다.

$ vue init webpack myapp
$ cd myapp
$ npm install --save axios vue-router vuex
로그인 후 복사

여기에서는 Vue Router와 Vuex를 사용하고 Vue Router는 라우팅 관리에 사용되고 Vuex는 상태 관리에 사용됩니다.

다음으로 기사 목록을 표시하는 새로운 "게시물" 구성 요소를 만듭니다. "comComponents" 디렉토리에 "PostList.vue"라는 파일을 생성할 수 있습니다:

<!-- 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>
로그인 후 복사

이 코드는 기사 목록 표시를 나타내며 Axios를 통해 백엔드 API에서 데이터를 가져옵니다.

다음으로 사용자가 컴포넌트에 접근할 수 있도록 라우팅 규칙을 설정해야 합니다. 라우팅 규칙은 "router" 디렉터리 아래의 "index.js" 파일에 추가할 수 있습니다.

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,
    },
  ],
});
로그인 후 복사

여기에서는 "/" 경로를 "PostList" 구성 요소에 매핑합니다.

3단계: 상태 관리에 Vuex 사용

마지막으로 구현해야 할 기능은 상태 관리입니다. 백엔드 API에서 얻은 데이터를 Vuex에 저장하고 필요할 때 표시해야 합니다. 이를 위해 먼저 Vuex 스토어를 생성해야 합니다.

// 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);
      });
    },
  },
});
로그인 후 복사

여기서 "posts"라는 상태 속성을 생성하고 "SET_POSTS" 작업을 정의하여 속성을 업데이트합니다.

다음으로 데이터 수집 및 상태 업데이트를 위해 PostList 컴포넌트를 Vuex 스토어에 연결해야 합니다.

<!-- 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>
로그인 후 복사

여기서 Vuex에서 제공하는 보조 함수 "mapState" 및 "mapActions"를 사용하여 Vuex 상태 및 작업을 컴포넌트에 매핑합니다. 가운데. 구성 요소가 생성되면 API에서 데이터를 가져오고 "fetchPosts" 메서드를 통해 상태를 업데이트합니다.

이 시점에서 우리는 Django와 Vue.js의 통합을 완료하고 완전한 SPA 애플리케이션을 구축했습니다. 애플리케이션을 실행하고 "/" 경로에 접근하면 기사 목록 표시 효과를 확인할 수 있습니다.

요약

이 글에서는 Django와 Vue.js를 사용하여 SPA 애플리케이션을 구축하는 과정을 소개합니다. 기존의 다중 페이지 애플리케이션과 비교하여 SPA는 더 나은 사용자 경험을 제공할 수 있으며 유지 관리 및 개발이 더 쉽습니다. 이 예가 여러분에게 참고와 영감을 줄 수 있기를 바라며, 여러분이 웹 개발의 길로 더욱 더 나아가길 바랍니다!

위 내용은 Django 및 Vue.js로 구축된 SPA 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

django 버전 확인하는 방법 django 버전 확인하는 방법 Dec 01, 2023 pm 02:25 PM

Django 버전 확인 단계: 1. 터미널 또는 명령 프롬프트 창을 엽니다. 2. Django가 설치되어 있는지 확인합니다. Django가 설치되지 않은 경우 패키지 관리 도구를 사용하여 설치하고 pip install django 명령을 입력합니다. 설치가 완료된 후 python -m django --version을 사용하여 Django 버전을 확인할 수 있습니다.

Django와 Flask: Python 웹 프레임워크 비교 분석 Django와 Flask: Python 웹 프레임워크 비교 분석 Jan 19, 2024 am 08:36 AM

Django와 Flask는 모두 Python 웹 프레임워크의 리더이며 둘 다 고유한 장점과 적용 가능한 시나리오를 가지고 있습니다. 이 기사에서는 이 두 프레임워크를 비교 분석하고 구체적인 코드 예제를 제공합니다. 개발 소개 Django는 모든 기능을 갖춘 웹 프레임워크이며, 주요 목적은 복잡한 웹 애플리케이션을 신속하게 개발하는 것입니다. Django는 ORM(Object Relational Mapping), 양식, 인증, 관리 백엔드 등과 같은 다양한 내장 기능을 제공합니다. 이러한 기능을 통해 Django는 대규모 처리를 수행할 수 있습니다.

Django 프레임워크의 장점과 단점: 알아야 할 모든 것 Django 프레임워크의 장점과 단점: 알아야 할 모든 것 Jan 19, 2024 am 09:09 AM

Django는 웹 개발 라이프사이클의 모든 측면을 포괄하는 완전한 개발 프레임워크입니다. 현재 이 프레임워크는 전 세계적으로 가장 인기 있는 웹 프레임워크 중 하나입니다. Django를 사용하여 자신만의 웹 애플리케이션을 구축하려는 경우 Django 프레임워크의 장점과 단점을 이해해야 합니다. 특정 코드 예제를 포함하여 알아야 할 모든 것이 여기에 있습니다. Django의 장점: 1. 빠른 개발 - Djang은 웹 애플리케이션을 빠르게 개발할 수 있습니다. 풍부한 라이브러리와 내부 기능을 제공합니다.

django 버전 확인하는 방법 django 버전 확인하는 방법 Nov 30, 2023 pm 03:08 PM

django 버전 확인 방법: 1. 명령줄을 통해 확인하려면 터미널이나 명령줄 창에서 "python -m django --version" 명령을 입력하세요. 2. Python 대화형 환경에서 확인하려면 "import django"를 입력하세요. print(django.get_version())" code; 3. Django 프로젝트의 설정 파일을 확인하여 설치된 애플리케이션 정보가 포함된 INSTALLED_APPS 목록을 찾습니다.

Django 버전을 업그레이드하는 방법: 단계 및 고려 사항 Django 버전을 업그레이드하는 방법: 단계 및 고려 사항 Jan 19, 2024 am 10:16 AM

Django 버전 업그레이드 방법: 단계 및 고려 사항, 필요한 특정 코드 예제 소개: Django는 더 나은 성능과 더 많은 기능을 제공하기 위해 지속적으로 업데이트되고 업그레이드되는 강력한 Python 웹 프레임워크입니다. 그러나 이전 버전의 Django를 사용하는 개발자의 경우 Django를 업그레이드하는 데 몇 가지 어려움이 있을 수 있습니다. 이 글에서는 Django 버전을 업그레이드하는 방법에 대한 단계와 주의 사항을 소개하고 구체적인 코드 예제를 제공합니다. 1. Djan을 업그레이드하기 전에 프로젝트 파일을 백업하세요.

django 버전의 차이점은 무엇입니까? django 버전의 차이점은 무엇입니까? Nov 20, 2023 pm 04:33 PM

차이점은 다음과 같습니다. 1. Django 1.x 시리즈: 이는 버전 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8 및 1.9를 포함하는 Django의 초기 버전입니다. 이 버전은 주로 기본적인 웹 개발 기능을 제공합니다. 2. Django 2.x 시리즈: 2.0, 2.1, 2.2 및 기타 버전을 포함한 Django의 중기 버전입니다. 3. Django 3.x 시리즈: 최신 버전입니다. 버전 3.0, 3 등을 포함하는 Django 시리즈.

django는 프론트엔드인가요, 백엔드인가요? django는 프론트엔드인가요, 백엔드인가요? Nov 21, 2023 pm 02:36 PM

django는 백엔드입니다. 세부사항: Django는 기본적으로 백엔드 프레임워크이지만 프런트엔드 개발과 밀접한 관련이 있습니다. Django의 템플릿 엔진, 정적 파일 관리, RESTful API와 같은 기능을 통해 프런트엔드 개발자는 백엔드 개발자와 협력하여 강력하고 확장 가능한 웹 애플리케이션을 구축할 수 있습니다.

Django, Flask, FastAPI: 초보자에게 적합한 프레임워크는 무엇인가요? Django, Flask, FastAPI: 초보자에게 적합한 프레임워크는 무엇인가요? Sep 27, 2023 pm 09:06 PM

Django, Flask, FastAPI: 초보자에게 적합한 프레임워크는 무엇인가요? 소개: 웹 애플리케이션 개발 분야에는 선택할 수 있는 우수한 Python 프레임워크가 많이 있습니다. 이 기사에서는 가장 널리 사용되는 세 가지 프레임워크인 Django, Flask 및 FastAPI에 중점을 둘 것입니다. 우리는 그들의 기능을 평가하고 초보자가 사용하기에 가장 적합한 프레임워크에 대해 논의할 것입니다. 동시에 초보자가 이러한 프레임워크를 더 잘 이해할 수 있도록 몇 가지 구체적인 코드 예제도 제공할 것입니다. 1. 장고: 장고

See all articles