0Pricing
Python Academy · レッスン

ビューとURL

リクエストをビューにルーティングします

「ビューとURL」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

ビューとは

Djangoのビューは、Webリクエストを受け取り、Webレスポンスを返す関数またはクラスです。ページのロジックを担当し、アプリのviews.pyに記述します。

from django.http import HttpResponse

def home(request):
    return HttpResponse('Hello, world!')
print('A view takes request, returns response')

request引数

すべてのビューは、受信したリクエストの詳細を保持するrequestオブジェクトを受け取ります。リクエストメソッド、GET/POSTデータ、ユーザー情報などが含まれます。

from django.http import HttpResponse

def info(request):
    return HttpResponse('Method: ' + request.method)
print('request carries the incoming data')

URLパターン

アプリのurls.pyでは、urlpatternsというリストとpath()関数を使って、URLパスをビューに対応付けます。

# blog/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home),
]
print('path maps a URL to a view')

URLに名前を付ける

パターンにnameを付けると、パスをハードコーディングせずに別の場所から参照できます。

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]
print("name='home' lets you reference it later")

URLパラメーター

<int:post_id>のようなコンバーターを使って、URLの一部を取得できます。取得した値はビューに渡されます。

from django.urls import path
from . import views

urlpatterns = [
    path('post/<int:post_id>/', views.detail, name='detail'),
]
print('post/5/ -> detail(request, post_id=5)')

パラメーターの読み取り

取得した値は、コンバーターで指定した名前と一致するキーワード引数として渡されます。

from django.http import HttpResponse

def detail(request, post_id):
    return HttpResponse('Post ' + str(post_id))
print('View receives post_id')

アプリのURL設定を取り込む

プロジェクトのルートurls.pyでは、各アプリのURL設定をinclude()で取り込み、ルーティングをモジュール化します。

# mysite/urls.py
from django.urls import path, include

urlpatterns = [
    path('blog/', include('blog.urls')),
]
print('include() wires up app urls')

テンプレートのレンダリング

render()ショートカットは、テンプレートとコンテキスト辞書を組み合わせ、HttpResponseを返します。

from django.shortcuts import render

def home(request):
    return render(request, 'home.html', {'name': 'Alice'})
print('render combines template + context')

404ヘルパー

get_object_or_404()はオブジェクトを取得し、見つからない場合は404を発生させます。よく使われる安全なパターンです。

from django.shortcuts import get_object_or_404, render
from .models import Post

def detail(request, post_id):
    post = get_object_or_404(Post, id=post_id)
    return render(request, 'detail.html', {'post': post})
print('get_object_or_404 handles missing data')

URLの逆引き

Pythonでは、reverse('detail', args=[5])を使ってパターン名からURLを生成します。テンプレートでは、{% url %}タグが同じ役割を果たします。

from django.urls import reverse
# reverse('detail', args=[5]) -> '/blog/post/5/'
# In a template: {% url 'detail' post.id %}
print('reverse builds URLs from names')

クラスベースビュー

Djangoには、ListViewやDetailViewのように、よくあるパターンを少ないコードで処理できるクラスベースビューも用意されています。

from django.views.generic import ListView
from .models import Post

class PostList(ListView):
    model = Post
print('ListView lists objects automatically')

理解度チェック

ビューとURLについての理解度を確認しましょう。

まとめ

リクエストをビューに振り分ける方法を学びました。

  • ビューはrequestを受け取り、レスポンスを返します
  • urlpatternsとpath()でURLをビューに対応付け、必要に応じてnameを指定します
  • <int:id>のようなコンバーターでURLの一部を取得します
  • include()でアプリのURL設定を組み込み、render()とget_object_or_404()を便利なショートカットとして使えます

よくある質問

「ビューとURL」レッスンは無料ですか?

はい。「ビューとURL」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「ビューとURL」で何を学びますか?

リクエストをビューにルーティングします ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「ビューとURL」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. プロジェクトとアプリ
  2. モデルとマイグレーション
  3. ビューとURL
  4. Django Admin
← Python Academyに戻る