Django + Vue.jsでシステム開発! (13)

Django+Vue.js
この記事は約5分で読めます。
記事内に広告が含まれます。

Python(Django)+Vue.js(Nuxt.js,Vuetify)を使ったシステムの開発です。

RESTfulパッケージのインストールは終わっていると思いますので早速使い方です。

スポンサーリンク

今回作成するAPIの機能

リクエスト(問い合わせ)方法

カテゴリーコード(0〜5)を指定して
category APIを getメソッドで呼ぶ

レスポンス(結果)内容

リクエストで指定されたカテゴリーコード(category)をitemテーブルから検索し
結果をJSON形式で返却する
返却する内容は

[
    status: 0:成功 1:失敗
    message: statusが1の場合にエラーの内容が入る
    {
        id: 0,
        category: 0,
        name: "文字列",
        price: 999 
    },
    {
        件数分繰り返す
    }
]
とする。

djangorestframerorkパッケージの読み込み

venvMitsumori > mitsumori > mitsumori > settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'api',
    'rest_framework',
    'django_filters',
]
・
・
・

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}

Serializerを作成

シリアライザ―とは変数を文字列の変換、この場合はJson文字列に変換するものです。
シリアライズされたものをもとに戻すのはデシリアライズと呼ばれます。

venvMitsumori > mitsumori > api > serializer.py

from rest_framework import serializers
from django_filters import rest_framework as filters
from .models import Item

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ('id', 'category', 'name', 'price',)

ViewSetを作成

venvMitsumori > mitsumori > api > views.py

from rest_framework import viewsets
from .models import Item
from .serializers import ItemSerializer

class ItemViewSet(viewsets.ModelViewSet):
    queryset = Item.objects.all()
    serializer_class = ItemSerializer

URLの定義を変更

まずはサイト全体のルーティングを修正します。
venvMitsumori > mitsumori > mitsumori > urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include

from api.urls import router as api_router ←追加

import debug_toolbar

urlpatterns = [
    path('admin/', admin.site.urls),
    path('__debug__/', include(debug_toolbar.urls)),

    # APIアプリケーションのルート追加
    url(r'^api/', include(api_router.urls)), ←変更
]

次にapi内のルーティングを修正します。
venvMitsumori > mitsumori > api > urls.py

from django.urls import path
from . import views
from rest_framework import routers
from .views import ItemViewSet

router = routers.DefaultRouter()
router.register(r'category', ItemViewSet)
urlpatterns = router.urls

実行

とりあえず[ http://127.0.0.1:8000/api/ ]をブラウザで開いてみます。

ここではAPIの一覧が表示されるようです

次に[ http://127.0.0.1:8000/api/category ]をブラウザで開いてみます。

商品の一覧が表示されました。
ただ、カテゴリーでの選択はできていません、次回は条件によって取得内容を切り替える処理を書いていきます。

コメント

タイトルとURLをコピーしました