1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Djangoのお勉強メモ

Last updated at Posted at 2020-11-29

Djangoについて触る機会があったので、メモとして残しておきます。

Djangoって何?

webアプリケーションを作成するのに便利なコンポーネントをまとめたフレームワークです。
Pythonで作成されています。
詳しいことや使い方は以下のドキュメントが役立ちます。

Django ドキュメント
https://docs.djangoproject.com/ja/

Django Girls のチュートリアル
https://tutorial.djangogirls.org/ja/

Djangoを使うまでの準備

上記のドキュメントに従い、まずは動かしてみます。
今回の環境は以下の通りです。
OS: Windows 10
エディタ: Visual Studio Code 1.51.1

Pythonのインストールと仮想環境のセットアップ

以下を参考に、Pythonのインストールをします。
https://www.python.jp/install/windows/index.html
※この時の最新は3.9.0でした。

次にPythonを実行する仮想環境を作ります。
VSCodeでフォルダを開き、ターミナルから以下のコマンドを実行します。

python -m venv .venv
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
.venv\Scripts\Activate.ps1

-mは「モジュールを指定して実行する」という意味です。
venvモジュールを実行して、".venv"フォルダに実行環境を作成します。
2つ目のSet-ExecutionPolicyはPowerShellの場合に必要とのこと。
Activate.ps1ファイルを実行して仮想環境を起動します。

Djangoのインストール

仮想環境ができたら、Djangoをインストールするためターミナルから以下のコマンドを実行します。
※ついでにpipの最新化もしておきます。

python -m pip install --upgrade pip
python -m pip install Django

※この時はDjango 3.1.3が最新でした。

VSCodeの拡張機能のインストール

後でデバッグができるように、VSCodeにPythonの拡張機能をインストールします。

Djangoプロジェクトを作る

以下のコマンドでプロジェクトを作成します。manage.pyなど、必要なファイルが自動生成されます。

django-admin startproject Otameshi_prj

manage.pyをVSCodeで開き、左のメニューアイコンから実行→「launch.jsonファイルを作成します」→Django→左上の三角ボタン(デバッグの開始)の順にクリックします。
ターミナルに以下のように表示されたら成功です。

Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

http://127.0.0.1:8000/ にブラウザでアクセスすると、Djangoのページが見えるようになっています。

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

以下のコマンドを実行して、アプリケーションを作成します。ここでも必要なファイルが自動生成されます。

python manage.py startapp Otameshi_app

プロジェクトのurls.pyに、作成したアプリケーションのURLを追加します。

Otameshi_prj/urls.py
 from django.contrib import admin
-from django.urls import path
+from django.urls import include, path
 
 urlpatterns = [
+    path('Otameshi_app/', include('Otameshi_app.urls')),
     path('admin/', admin.site.urls),
 ]

アプリケーションのフォルダにurls.pyを追加し、indexを設定します。

Otameshi_app/urls.py
+from django.urls import path
+
+from . import views
+
+urlpatterns = [
+    path('', views.index, name='index'),
+]

indexの処理の内容はアプリケーションのviews.pyにメソッドとして定義します。
ここでは"Hello, world."を出力します。

Otameshi_app/views.py
 from django.shortcuts import render
+from django.http import HttpResponse
 
 # Create your views here.
+
+
+def index(request):
+    return HttpResponse("Hello, world.")

ここまでできたら、またデバッグ実行して、 http://127.0.0.1:8000/Otameshi_app にブラウザでアクセスすると、"Hello, world."と書かれたwebページが表示されます。

Modelの作成

データベースの元となるデータをModelといいます。
ここではCommandという名前で、テキストを保持するデータを作ってみます。

Otameshi_app/models.py
 from django.db import models
 
 # Create your models here.
+
+class Command(models.Model):
+    cmd = models.TextField()

ソースコードの変更を行ったら、マイグレーションを行って環境に変更を反映します。

python manage.py makemigrations Otameshi_app
python manage.py migrate

アプリケーションの登録と管理者の作成

一通りアプリケーションが動くことが確認できたので、アプリケーションの登録を行います。

Otameshi_prj/settings.py
 INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
+    'Otameshi_app',
 ]
Otameshi_app/admin.py
 from django.contrib import admin
+from .models import Command
 
 # Register your models here.
+
+admin.site.register(Command)

ここで、管理者設定を行っておきます。以下のコマンドで管理者を登録します。管理者名、メールアドレス、パスワードの入力を要求されるので、適当に入力します。

python manage.py createsuperuser

ここまでできたら、再度デバッグ実行して、 http://127.0.0.1:8000/admin にアクセスします。先ほど設定した管理者名とパスワードを入力すると、アプリケーションと"Command"のAPIが表示されています。

Django REST Frameworkを使う

以下のコマンドでDjango REST Frameworkをインストールします。

pip install djangorestframework

インストールしたら、プロジェクトで使用可能なように設定を行います。

Otameshi_prj/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',
 ]

データの受け渡しを行うために必要なSerializerを作成します。
対象は先ほど作成したCommandで、すべての項目をシリアライズするように設定しておきます。
(といっても現状ではテキスト1項目だけですけど。)

Otameshi_app/serializer.py
+from rest_framework import serializers
+from .models import Command
+
+class CommandSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Command
+        fields = '__all__'

Serializerを作成したら、それを使って表示を行うCommandViewSetを作成します。

Otameshi_app/views.py
 from django.shortcuts import render
 from django.http import HttpResponse
+from rest_framework import viewsets
+from .models import Command
+from .serializer import CommandSerializer
 
 # Create your views here.
 
 def index(request):
     return HttpResponse("Hello, world.")
+
+class CommandViewSet(viewsets.ModelViewSet):
+    queryset = Command.objects.all()
+    serializer_class = CommandSerializer

http://127.0.0.1:8000/api/command/ で表示できるように、URL設定をしておきます。Django REST Frameworkに用意されているrouterを使用して、URLとCommandViewSetを対応付けます。

Otameshi_prj/urls.py
 from django.contrib import admin
 from django.urls import include, path
+from Otameshi_app.urls import router 
 
 urlpatterns = [
-    path('Otameshi_app/', include('Otameshi_app.urls')),
+    path('Otameshi_app/', include(router.urls)),
     path('admin/', admin.site.urls),
 ]
Otameshi_app/urls.py
 from django.urls import path
+from rest_framework import routers
 
 from . import views
 
+router = routers.DefaultRouter()
+router.register('command', views.CommandViewSet)
+
 urlpatterns = [
     path('', views.index, name='index'),
 ]

これで再度デバッグを実行し http://127.0.0.1:8000/api/command/ にアクセスすると、登録したデータの一覧が表示されます。
とはいえ、最初は何も表示されていないので、POSTをするとデータが追加されていくことがわかるかと思います。
※不要になったデータは http://127.0.0.1:8000/admin の管理者画面から削除することができます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?