Nuxt.jsとDjangoを使用して、サーバーサイドで動作するウェブアプリケーションを構築するための完全かつ包括的なガイドを提供します。以下に示すステップバイステップのガイドは、両者を組み合わせて効率的なフルスタックアプリケーションを開発するための流れを説明します。
1. Nuxt.jsとDjangoの概要
- Nuxt.jsは、Vue.jsに基づいたフレームワークで、サーバーサイドレンダリング(SSR)や静的サイト生成に優れています。SEOの最適化やパフォーマンスの向上に役立ちます。
- Djangoは、Pythonで書かれた強力なウェブフレームワークで、主にバックエンドの構築に使われます。データベース操作、認証、URLのルーティングなど、ウェブアプリケーションに必要な多くの機能を標準で提供します。
このガイドでは、Djangoをバックエンドとして、Nuxt.jsをフロントエンドとして使用する方法を説明します。目的は、両者を統合して、データの取得や操作が効率的に行えるアプリケーションを構築することです。

2. 開発環境の準備
まずは、開発に必要なツールをインストールします。
必要なツール
- Node.js:Nuxt.jsを動かすために必要です。公式サイトからインストールできます。
- Python:Djangoを動かすために必要です。
- Django:Pythonでインストールします。
- Django REST Framework:APIを構築するために使用します。
- Nuxt.js:フロントエンドの作成に使用します。
インストール手順
-
Node.jsとnpmのインストール
- Node.js公式サイトからインストールします。
- コマンドで確認:
bash
node -v npm -v
-
PythonとDjangoのインストール
- Pythonがインストールされていない場合は、Python公式サイトからインストールします。
- Djangoをインストール:
bash
pip install django
-
Django REST Frameworkのインストール
bashpip install djangorestframework
-
Nuxt.jsのプロジェクトを作成
bashnpx create-nuxt-app my-nuxt-app
ここで、プロジェクト名やテンプレートを選択します。
3. DjangoでAPIを作成
Nuxt.jsのフロントエンドがDjangoのバックエンドからデータを取得できるように、まずはDjangoでREST APIを作成します。
Djangoプロジェクトの作成
-
Djangoプロジェクトの作成
bashdjango-admin startproject myproject cd myproject
-
アプリケーションの作成
bashpython manage.py startapp api
-
api
アプリをINSTALLED_APPS
に追加
myproject/settings.py
のINSTALLED_APPS
に次の行を追加:python'api', 'rest_framework',
モデルとシリアライザの作成
例えば、ユーザー情報を扱う簡単なモデルを作成します。
-
api/models.py
にモデルを作成pythonfrom django.db import models class User(models.Model): name = models.CharField(max_length=100) email = models.EmailField()
-
マイグレーションを実行
bashpython manage.py makemigrations python manage.py migrate
-
api/serializers.py
にシリアライザを作成pythonfrom rest_framework import serializers from .models import User class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ['id', 'name', 'email']
APIビューの作成
api/views.py
にAPIのビューを作成します。
pythonfrom rest_framework.views import APIView
from rest_framework.response import Response
from .models import User
from .serializers import UserSerializer
class UserList(APIView):
def get(self, request):
users = User.objects.all()
serializer = UserSerializer(users, many=True)
return Response(serializer.data)
URLの設定
api/urls.py
を作成し、ビューを設定します。
pythonfrom django.urls import path
from .views import UserList
urlpatterns = [
path('users/', UserList.as_view(), name='user-list'),
]
myproject/urls.py
にapi
のURLをインクルードします。
pythonfrom django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('api.urls')),
]
これで、http://localhost:8000/api/users/
でユーザー情報を取得できるAPIが完成しました。
4. Nuxt.jsでフロントエンドを作成
Nuxt.jsのプロジェクトで、DjangoのAPIからデータを取得して表示する準備をします。
APIからデータを取得
-
pages/index.vue
でAPIを呼び出すNuxt.jsのページコンポーネントでDjangoのAPIを呼び出します。
vueユーザーリスト
- {{ user.name }} - {{ user.email }}
Nuxt.jsは、
asyncData
メソッドを使ってサーバーサイドでデータを取得します。これにより、ページがレンダリングされる前にデータを取得することができます。 -
Axiosの設定
Nuxt.jsでDjangoのAPIと通信するために、Axiosを設定します。
nuxt.config.js
に次の設定を追加します。javascriptexport default { axios: { baseURL: 'http://localhost:8000/api/', // Django APIのURL } }
5. CORSの設定
Nuxt.jsのフロントエンドとDjangoのバックエンドが異なるドメインで動作している場合、CORS(クロスオリジンリソースシェアリング)を設定する必要があります。
-
django-cors-headers
のインストールbashpip install django-cors-headers
-
settings.py
に設定pythonINSTALLED_APPS = [ # 他のアプリ 'corsheaders', ] MIDDLEWARE = [ # 他のミドルウェア 'corsheaders.middleware.CorsMiddleware', ] CORS_ORIGIN_ALLOW_ALL = True # 任意のドメインからのアクセスを許可
これで、Nuxt.jsからDjangoのAPIへのリクエストが許可されます。
6. 最後の仕上げ
-
開発サーバーの起動
DjangoとNuxt.jsの両方の開発サーバーを起動します。
bash# Django python manage.py runserver # Nuxt.js npm run dev
これで、DjangoバックエンドとNuxt.jsフロントエンドが連携し、データのやり取りができる状態になりました。
まとめ
このガイドでは、Nuxt.jsをフロントエンド、Djangoをバックエンドとして使用し、サーバーサイドで動作するウェブアプリケーションを構築する方法を説明しました。DjangoでAPIを作成し、Nuxt.jsでそのAPIを利用してデータを表示する構成です。このアーキテクチャにより、柔軟でスケーラブルなアプリケーションを開発することができます。