群馬県でPythonを使ったAIやシステムを開発しているファントム

Navigation
群馬県でPythonを使ったAIやシステムを開発しているファントム

群馬県でPythonを使ったAIやシステムを開発しているファントムです。企業の経営課題を最適なテクノロジーで解決します。テックブログではPythonを中心にプログラミングに役立つ情報を発信しています。

投稿を検索する


  • 株式会社ファントム コーポレートサイト

カテゴリー



  • AWS 16
  • Django 45
  • FastAPI 4
  • Flask 8
  • GCP 1
  • Information 37
  • Other 32
  • PHP 2
  • Python 93
  • Pythonista 3
  • Rust 1

タグ


Alembic API argparse Beautiful Soup black Channels charset CodeCommit datetime Django REST framework Docker enumerate f-string git GitHub glob Google Colaboratory i18n IAM Internship Jupyter Lambda Matplotlib Nginx OpenCV pandas PIL Pillow PostgreSQL PyCharm PyCon pyenv PyTorch Redis Rembg ReportLab requests S3 Sentry slack tqdm uWSGI venv Vue.js youtube
このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシーと利用規約が適用されます。

© 2022 Fantom, Inc.

Hydra WordPress Theme by EckoThemes.

Published with WordPress.

Related Articles

Filter by Category

  • Python(93)
  • Django(45)
  • Information(37)
  • Other(32)
  • AWS(16)
  • Flask(8)
  • FastAPI(4)
  • Pythonista(3)
  • PHP(2)
  • GCP(1)
  • Rust(1)

Filter by Author

  • EIGHT (14)
  • hayai017 (2)
  • press (196)
Back to Latest Articles
Django

Vue.jsとDjango REST FrameworkでSPA構築〜前半〜

Vue.jsとDjango REST FrameworkでSPA構築〜前半〜 Vue.jsとFlaskの連携に続き、今回はVue.jsとDjango(Django REST Framework)の連携を解説します。チュー […]

Posted on 2nd 4月 2023 by press

Other

.gitignoreには書かずに自分の環境だけファイルを管理から外す

.gitignoreには書かずに自分の環境だけファイルを管理から外す Gitでは管理から外すファイルを指定するには、.gitignoreファイルを使用します。これは、Gitが無視するべきファイルやディレクトリのリストを書 […]

Posted on 1st 4月 2023 by press

Flask

Flaskで開発サーバーを起動する時のTips

Flaskで開発サーバーを起動する時のTips Flaskで開発中にflask runコマンドでサーバーを起動した際に以下の表示が出る場合があります。この表示は.envもしくは.flaskenvがあってもpython-d […]

Posted on 1st 3月 2023 by press

Python

PyCharmで.envから環境変数を読み込む

PyCharmで.envから環境変数を読み込む 環境変数を.envに書いて読み込ませる理由 Pythonの開発では、セキュリティや環境毎の設定、柔軟性などの理由から.envファイルに環境変数を書いて読み込ませる方法が推奨 […]

Posted on 1st 3月 2023 by press

Rust

PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労

他人の作ったライブラリを効率的に扱うことができました。入力や出力の型が決まっているので定義ジャンプすればそれがどんな型なのか、どんな関数が用意されてるのか見ることができます。ソースコードも非常に読みやすいです。 trai […]

Posted on 28th 2月 2023 by EIGHT

Flask

Vue.jsとFlaskでSPA(Single Page Application)

Vue.jsとFlaskでSPA(Single Page Application) 普段はフロント側を書く機会がほとんど無いのですが、プロジェクトをモダンなフレームワークに順次対応していきたいと思い、勉強を兼ねてVue. […]

Posted on 26th 2月 2023 by press

Other

コマンドラインからPyCharmを起動する

コマンドラインからPyCharmを起動する Pythonで開発する時は必ず使っているJetBrains社のPyCharmですが、全部入りのIDEであるが故に仮想環境やフレームワークの自動設定などのサポートが手厚いことがか […]

Posted on 23rd 2月 2023 by press

FastAPI

tcp 0.0.0.0:5000: bind: address already in use

tcp 0.0.0.0:5000: bind: address already in use FlaskやFastAPIで開発することも増えてきたので5000番のポートを使用する機会が増えました。Djangoで開発する時 […]

Posted on 22nd 2月 2023 by press

Flask

Flaskで発生するsignal only works in main threadの解決方法

Flaskで発生するsignal only works in main threadの解決方法 Flaskで開発中のアプリケーションを起動すると以下のエラーが発生する場合があります。このエラーは、Flaskではmain関 […]

Posted on 16th 2月 2023 by press

AWS

AWS Cloud9にPython3.9をインストール

AWS Cloud9にPython3.9をインストール AWSのCloud9(Ubuntu)にはデフォルトでPython 3.6.9がインストールされています。 openaiに必要なpandasのインストール opena […]

Posted on 15th 2月 2023 by press

Other

PyCharmで.txtファイルで発生するRequirementsTokenTypeというエラー

PyCharmで.txtファイルで発生するRequirementsTokenTypeというエラー PyCharmで拡張子が.txtファイルを開くとエディタに以下のようなエラーが発生します。 PyCharmでは.txtはr […]

Posted on 15th 2月 2023 by press

Other

お名前.comからXserver Domainにドメイン移管

お名前.comからXserver Domainにドメイン移管 年末や年度末になるとサーバーやドメインの新規契約や更新の時期ですよね。その時々で費用や使いやすさを重視してサービスを選んだ結果、別々の会社で管理されているドメ […]

Posted on 8th 2月 2023 by press

AWS

AWSのCloud9を使ってPythonのプログラミング研修を開催

AWSのCloud9を使ってPythonのプログラミング研修を開催 2022年11月から2023年2月までの期間で、群馬県庁職員を対象にしたDXを促進するためのPythonによるプログラミング研修を開催しました。現在、群 […]

Posted on 4th 2月 2023 by press

PHP

ConoHa WINGからロリポップにWordPressを引っ越し

ConoHa WINGからロリポップにWordPressを引っ越し WordPressを運営していくと処理できるアクセス数やコストなど、様々な理由でサーバーの移行を考えるタイミングがあります。今までWordPressの移 […]

Posted on 20th 1月 2023 by press

Python

AttributeError: module ‘numpy’ has no attribute ‘float’

AttributeError: module ‘numpy’ has no attribute ‘float’ numpyを使ったライブラリをコマンド実行した際に以下のエラ […]

Posted on 16th 1月 2023 by press

GCP

YouTube APIキーの取得方法

YouTube APIキーの取得方法 普段はログインフォームにIDとパスワードを入力してログインしていたサービスでもAPIが提供されていれば、Pythonなどのプログラムからコンテンツのアップロードや取得といった操作を行 […]

Posted on 12th 1月 2023 by press

Other

2022年に最も読まれた記事ランキング

2022年に最も読まれた記事ランキング あけましておめでとうございます2023年もどうぞよろしくお願いします ファントムでは「情報技術で人々の暮らしを豊かにする」という企業理念で、2023年も皆様のお役に立てるよう精進し […]

Posted on 6th 1月 2023 by press

Other

Sentryのエラー検知をSlackに通知

Sentryのエラー検知をSlackに通知 前回に引き続き、今回はSentryとSlackの連携方法について説明します。 SentryとSlackの連携機能は導入する決め手となった理由の一つです。デフォルトではメールアド […]

Posted on 24th 11月 2022 by press

FastAPI

コピペでOK! エラー検知・監視でSentryを導入

コピペでOK! エラー検知・監視でSentryを導入 システムを運用していくうえで避けては通れないシステムの監視とエラーの検知ですが、ファントムではSentryというサービスを利用しています。SentryとSlackを連 […]

Posted on 19th 11月 2022 by press

Python

PythonからDeepLのAPIを使って翻訳

PythonからDeepLのAPIを使って翻訳 最先端のAI技術を使った世界最高レベルの機械翻訳のDeepLをAPIで操作します。deeplのライブラリを使うとPythonで書く通常のPOSTのコードよりも記述量を少なく […]

Posted on 11th 11月 2022 by press

View Latest Posts
Django

Vue.jsとDjango REST FrameworkでSPA構築〜前半〜


press
Vue.jsとDjango REST FrameworkでSPA構築〜前半〜
Posted on 2nd 4月 2023 by press
2024年度 インターンシップ 募集開始

Vue.jsとDjango REST FrameworkでSPA構築〜前半〜

Vue.jsとFlaskの連携に続き、今回はVue.jsとDjango(Django REST Framework)の連携を解説します。チュートリアルやネット上の情報は1ページだけ連携する内容が多く、ルーティングを考慮した複数ページに対応したSPA(Single Page Application)の情報が無かったので、本記事ではそれぞれ違うURLで表示する2ページの構成にしました。views.pyの関数とルーティングを増やしていけば3ページ、4ページ…と構成を増やすことができます。ボリュームが大きいので前半(バックエンド)と後半(フロントエンド)に分けて解説していきます。

Vue.jsとFlaskでSPA(Single Page Application)

コードはGitHubリポジトリにあげています。

開発環境

PC: MacBook Pro (14, 2021)
OS: macOS Monterey 12.0.1
Python: 3.10.0
Django: 4.1.7
Vue: 3.2.47

完成時のディレクトリ構造

※vue createコマンドで生成されるfrontend/node_modulesは非表示にしています。

.
├── app
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── backend
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── db.sqlite3
├── dist
│   ├── favicon.ico
│   └── static
│       ├── css
│       │   └── app.ae28e334.css
│       └── js
│           ├── app.c134098e.js
│           ├── app.c134098e.js.map
│           ├── chunk-vendors.fd7cbdcf.js
│           └── chunk-vendors.fd7cbdcf.js.map
├── frontend
│   ├── README.md
│   ├── babel.config.js
│   ├── jsconfig.json
│   ├── package-lock.json
│   ├── package.json
│   ├── public
│   │   ├── favicon.ico
│   │   └── index.html
│   ├── router.js
│   ├── src
│   │   ├── App.vue
│   │   ├── assets
│   │   │   └── logo.png
│   │   ├── components
│   │   │   ├── OneView.vue
│   │   │   └── TwoVie.vue
│   │   └── main.js
│   └── vue.config.js
├── manage.py
├── requirements.txt
├── templates
│   └── index.html
└── venv

Djangoプロジェクトを作成

DjangoとDjango REST Framework、django-cors-headersをインストールします。

pip install Django djangorestframework django-cors-headers

Djangoプロジェクト(backend)を作成します。(.を付けずに実行すると1段階階層が深いところにディレクトリが生成されます。)

django-admin startproject backend .

開発サーバーを起動します

python manage.py runserver

http://127.0.0.1:8000/にアクセスしてブラウザで画像のように表示されていればDjangoが起動できています。

Djangoの起動画面
Djangoの起動画面

Djangoアプリケーションを作成

Djangoアプリケーション(app)を作成します

python manage.py startapp app

appディレクトリが生成されたらbackend/settings.pyに設定を追加します。

追加項目
・INSTALLED_APPS
・MIDDLEWARE
・CORS_ORIGIN_WHITELIST

backend/settings.py

...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',  # 追加
    'app',  # 追加
    'corsheaders',  # 追加
]
...

...
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',  # 追加
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
...

...
# 追加
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:8080',
    'http://127.0.0.1:8000',
    'http://localhost:8000',
    'http://localhost:8080',
)
...

backend/urls.py

from django.contrib import admin
from django.urls import path, include, re_path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/v1/', include('app.urls')),
]

app/views.py

from django.views.generic.base import TemplateView
from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response

import datetime


class SampleAPIView(APIView):
    def get(self, request):
        return Response("OK", status=status.HTTP_200_OK)


class DateTimeView(APIView):
    def get(self, request):
        datetime_str = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
        return Response(datetime_str, status=status.HTTP_200_OK)


class IndexView(TemplateView):
    template_name = "index.html"

appにurls.pyを追加します。

touch app/urls.py

app/urls.py

from django.urls import path
from app.views import SampleAPIView, DateTimeView

urlpatterns = [
    path("sample/", SampleAPIView.as_view(), name="sample"),
    path("datetime/", DateTimeView.as_view(), name="datetime"),
]

http://127.0.0.1:8000/api/v1/sample/とhttp://127.0.0.1:8000/api/v1/datetime/の各ページにアクセスしてブラウザで画像のように表示されていればDjango REST frameworkでAPI連携の準備ができました。

Django REST frameworkの表示
Django REST frameworkの表示
Django REST frameworkの表示
Django REST frameworkの表示

Django REST frameworkでAPI連携の準備ができたので、一旦ここでバックエンド側は終了です。続いてフロントエンド側(Vue.js)の実装を進めていきます。

後半のフロントエンドの実装は以下のURLです。

Vue.jsとDjango REST FrameworkでSPA構築〜後半〜
ファントムYouTubeチャンネル

株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    press
    • Django REST framework
    • Vue.js
    • Share Article:
    • Twitter
    • Facebook
    • Pinterest
    • LinkedIn
    • Reddit

    Related Articles

    Django

    Djangoの国際化(i18n)で多言語化(後半)

    Djangoの国際化(i18n)で多言語化(後半) 前回からの続きです。 コードはGitHubリポジトリにあげています。 上記コードを実行すると、locale/en/LC_MESSAGES/django.poが生成されま […]

    Posted on 14th 6月 2020 by press
    Django

    request.FILES.get(‘file’)とrequest.FILES[‘file’] の違い

    request.FILES.get(‘file’)とrequest.FILES[‘file’] の違い この記事は生成AIで作成されました request.FILES.ge […]

    Posted on 21st 5月 2023 by press