URLとビューの基本概念
URLとは何か?
Webサイトのページにアクセスするための「アドレス」を意味します。Djangoでは、URLによってどのビュー(画面)が表示されるかを定義する仕組みが組み込まれています。
ビューとは何か?
ビューとは、ユーザーがアクセスしたときに表示されるページの内容やロジックを決定する部分です。Djangoのビューは、主にPythonで記述され、リクエストに応じたレスポンスを返します。
URLの設定
urls.pyファイルの役割
Djangoでは、リクエストされたURLをどのビューに紐づけるかを定義するために「urls.py」ファイルを使用します。
URLの設定手順
- プロジェクトのディレクトリにある
urls.py
ファイルを開きます。 - 必要なURLパターンを追加します。
例:基本的なURL設定
from django.contrib import admin
from django.urls import path
from . import views # ビューのインポート
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='home'), # ホームページのURL
path('about/', views.about, name='about'), # 「About」ページのURL
]
path()関数の構成
- path(‘URLパターン’, ビュー関数, オプションの名前)
URLパターン
: ユーザーがアクセスするURLの部分。ビュー関数
: リクエストが来たときに呼び出される関数。オプションの名前
: このURLパターンを識別するための名前。
ビューの作成
ビューの定義方法
ビューはviews.py
ファイルに定義されます。このファイルでリクエストを受け取り、HTMLやテキストなどのレスポンスを返す処理を記述します。
基本的なビュー関数の例
from django.http import HttpResponse
# ホームページ用ビュー
def home(request):
return HttpResponse("<h1>ようこそ!Djangoのホームページへ</h1>")
# Aboutページ用ビュー
def about(request):
return HttpResponse("<h1>このサイトについて</h1>")
render()関数の利用
より複雑なページを表示する場合、テンプレートを利用することが一般的です。Djangoには、テンプレートを表示するためのrender()
関数が用意されています。
render()を使ったビューの例
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
- render(request, テンプレート名): 指定したテンプレートを使ってページを生成します。
テンプレートの設定
テンプレートとは?
テンプレートはHTMLファイルの形式で作成され、動的なコンテンツを表示するための仕組みを提供します。
テンプレートの配置場所
Djangoでは、通常、各アプリケーション内に「templates」というフォルダを作成してテンプレートを配置します。
例: テンプレートフォルダの構成
myapp/
├── templates/
│ └── home.html
├── views.py
└── urls.py
簡単なテンプレート例
home.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ホームページ</title>
</head>
<body>
<h1>ようこそ、Djangoのホームへ!</h1>
</body>
</html>
開発サーバでの動作確認
開発サーバの起動方法
Djangoには開発用の簡単なサーバが付属しています。次のコマンドを実行すると、すぐにアプリケーションの動作を確認できます。
python manage.py runserver
動作確認の手順
- ターミナルに表示されるURL(通常は
http://127.0.0.1:8000/
)をブラウザで開きます。 - 設定したURLにアクセスして、正しいビューが表示されているか確認します。
例:
- ホームページ:
http://127.0.0.1:8000/
- Aboutページ:
http://127.0.0.1:8000/about/
6. まとめ
DjangoのURLとビューの設定は、Webアプリケーションを構築するうえで非常に重要な基礎です。URLによってどのビューを呼び出すかを明確に定義し、ビューで動的なレスポンスを作成することで、さまざまなWebページを構築できます。