Djangoのお勉強メモ
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を追加します。
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を設定します。
+from django.urls import path
+
+from . import views
+
+urlpatterns = [
+ path('', views.index, name='index'),
+]
indexの処理の内容はアプリケーションのviews.pyにメソッドとして定義します。
ここでは"Hello, world."を出力します。
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という名前で、テキストを保持するデータを作ってみます。
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
アプリケーションの登録と管理者の作成
一通りアプリケーションが動くことが確認できたので、アプリケーションの登録を行います。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
+ 'Otameshi_app',
]
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
インストールしたら、プロジェクトで使用可能なように設定を行います。
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項目だけですけど。)
+from rest_framework import serializers
+from .models import Command
+
+class CommandSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Command
+ fields = '__all__'
Serializerを作成したら、それを使って表示を行うCommandViewSet
を作成します。
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
を対応付けます。
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),
]
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 の管理者画面から削除することができます。
Author And Source
この問題について(Djangoのお勉強メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/yoktave-yoknel/items/b48bf7012ec602d1ab1b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .