0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Djangoのアプリを作成し、ローカル環境で動作させるまで

Last updated at Posted at 2024-11-10

目的

  • Django で簡単なアプリを作成
  • 作成したアプリをローカル環境で動作

前提

  • OS
    • macOS Sonoma 14.6
  • 各バージョン
    • python 3.12
    • Django 5.1.3

準備

プロジェクトを作成

django-admin startproject {プロジェクト名}
# 例)「sampleProject」というプロジェクトを作成
django-admin startproject sampleProject

アプリを作成

cd {プロジェクトのディレクトリ}
python manage.py startapp {アプリ名}
# 例)「sampleProject」のプロジェクトに「sampleApp」のアプリを作成
cd sampleProject
python manage.py startapp sampleApp

ローカルサーバー起動

python manage.py runserver

実装

ルーティングを定義

アプリごとにルーティングを定義するため、各アプリのディレクトリ配下にurls.pyという新規ファイルを作成

# sampleProject/sampleApp/urls.py

from django.urls import path
from . import views

app_name = 'sampleApp'
urlpatterns = [
    path('', 'views.index', name = 'index'),
    ...
]
  • app_nameにはアプリ名を代入する
  • path()でURLと関数を対応づける。引数は以下の通り
    • 第一引数:URL
    • 第二引数:呼び出したい関数(ビュークラス)
    • 第三引数:ルート名

アプリごとに定義したルーティングをプロジェクトのディレクトリ配下にあるurls.pyへ追加することで、プロジェクト全体にルーティングを反映

# sampleProject/sampleProject/urls.py

...
# 「include」を追加
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # アプリごとにルーティングを追加
    path('sampleApp/', include('sampleApp.urls')),
    ...
]

上記の定義をすることで、「sampleApp」で呼び出す関数に対応するURLの先頭に「sampleApp」の文字列が必須となる

ビュークラスを作成

sampleProject/sampleApp/urls.py で定義したルーティングで呼び出したい関数(ビュークラス)を作成
例として、今回は IndexView クラスを作成

# sampleProject/sampleApp/views.py

from django.shortcuts import render
from django.views import View

class IndexView(View):
    def get(self, request):
        return render(request, 'sampleApp/index.html')

index = IndexView.as_view()
  • IndexView クラスは View クラスを継承
  • render() の第二引数は画面表示(返却)したい HTML ファイルを指定
  • as_view() によって IndexView クラスを関数に変換
    • 今回は urls.pypath() の第二引数に views.index と指定したため、変数名を index と定義

テンプレートを作成

ビュークラスの戻り値で指定したテンプレートファイルを作成

# sampleProject/templates/sampleApp/index.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>sampleProject</title>
</head>
<body>
    <h1>sampleApp</h1>
</body>
</html>

テンプレートファイルに対する設定を追加

# sampleProject/sampleProject/settings.py

...
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # テンプレートファイルを格納するディレクトリパスを指定
        'DIRS': [BASE_DIR / 'templates'],
...
# 日本語対応設定
LANGUAGE_CODE = 'ja'

# 日本のタイムゾーン設定
TIME_ZONE = 'Asia/Tokyo'
...

動作確認

以下の URL にアクセス
http://127.0.0.1:8000/sampleApp
sampleApp.png

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?