JavaScriptVue JS

Интеграция Nuxt.js и Django REST Framework для создания современных веб-приложений

Nuxt.js и Django REST Framework — мощные инструменты для разработки современных веб-приложений. В этой статье мы рассмотрим, как интегрировать Nuxt.js с Django REST Framework для создания гибких и производительных веб-приложений. Погрузимся в примеры кода и узнаем, как совместно использовать оба фреймворка.

Настройка проекта Nuxt.js и Django

Для начала создайте проекты Nuxt.js и Django с помощью их соответствующих CLI:

npx create-nuxt-app my-nuxt-app
django-admin startproject my_django_project

Настройка Django REST Framework

Для использования Django REST Framework установите его и добавьте в settings.py:

INSTALLED_APPS = [
    ...
    'rest_framework',
]

Создание API с использованием Django REST Framework

Создайте модель, сериализатор и представление для работы с данными в Django:

# models.py
class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()

# serializers.py
from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ('title', 'content')

# 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

Настройка маршрутизации в Django

Добавьте URL-шаблон для представления API в urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path('api/posts/', views.PostList.as_view(), name='post-list'),
]

Настройка Nuxt.js

Установите Axios для отправки HTTP-запросов с Nuxt.js:

npm install @nuxtjs/axios

Добавьте плагин Axios в nuxt.config.js:

modules: [
  '@nuxtjs/axios',
],

axios: {
  baseURL: 'http://localhost:8000', // Django сервер
},

Получение данных из API в Nuxt.js

Используйте асинхронный метод fetch() в Nuxt.js для получения данных из API:

// pages/index.vue
export default {
  async fetch() {
    this.posts = await this.$axios.$get('/api/posts/')
  },
  data() {
    return {
      posts: [],
    }
  },
}

Отображение данных в Nuxt.js

Используйте полученные данные для отображения контента в шаблоне Nuxt.js:

<template>
  <div>
    <h1>Список статей</h1>
    <ul>
      <li v-for="post in posts" :key="post.id">
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
      </li>
    </ul>
  </div>
</template>

Создание и обновление данных через API

Для выполнения POST- и PUT-запросов, создайте форму для добавления и редактирования статей:

<template>
  ...
  <div>
    <h2>Добавить/Редактировать статью</h2>
    <form @submit.prevent="submitForm">
      <input type="text" v-model="form.title" placeholder="Заголовок" />
      <textarea v-model="form.content" placeholder="Содержание"></textarea>
      <button type="submit">Сохранить</button>
    </form>
  </div>
  ...
</template>
// pages/index.vue
export default {
  ...
  methods: {
    async submitForm() {
      if (this.form.id) {
        await this.$axios.$put(`/api/posts/${this.form.id}/`, this.form)
      } else {
        await this.$axios.$post('/api/posts/', this.form)
      }
      this.form = { title: '', content: '' }
      await this.fetch()
    },
  },
  data() {
    return {
      posts: [],
      form: {
        title: '',
        content: '',
      },
    }
  },
}

Удаление данных через API

Добавьте кнопку удаления к каждому элементу списка и метод для отправки DELETE-запроса:

<template>
  ...
  <ul>
    <li v-for="post in posts" :key="post.id">
      ...
      <button @click="deletePost(post.id)">Удалить</button>
    </li>
  </ul>
  ...
</template>
// pages/index.vue
export default {
  ...
  methods: {
    ...
    async deletePost(id) {
      await this.$axios.$delete(`/api/posts/${id}/`)
      await this.fetch()
    },
  },
  ...
}

Заключение

В этой статье мы рассмотрели, как интегрировать Nuxt.js с Django REST Framework для создания современных веб-приложений. Примеры кода включают создание, чтение, обновление и удаление данных через API, а также интеграцию с веб-интерфейсом на основе Nuxt.js. Теперь вы готовы применить эти знания для создания мощных и гибких веб-приложений.

1/5 - (1 голос)

Добавить комментарий

Back to top button