Djangoとは何か
Djangoは、Pythonで書かれたオープンソースのWebフレームワークで、”The web framework for perfectionists with deadlines.”というスローガンのもと、迅速な開発とクリーンな設計を目指しています。
Djangoの主な特徴は以下の通りです:
-
全機能を備えたフレームワーク: Djangoは、開発者がWebアプリケーションを開発する際に必要となる多くの機能を提供します。これには、認証、URLルーティング、テンプレートエンジン、オブジェクトリレーショナルマッピング (ORM)、データベーススキーマのマイグレーションなどが含まれます。
-
DRY原則: Djangoは”Don’t Repeat Yourself”の原則を強く推奨します。これは、すべての情報が唯一無二の、一貫した場所に存在すべきであるという原則です。
-
再利用可能なコンポーネント: Djangoは、再利用可能なアプリケーションとプラガブルなコンポーネントの概念を導入しました。これにより、開発者は既存のコンポーネントを再利用して新しい機能を迅速に追加することができます。
-
セキュリティ: Djangoは、開発者が安全なWebアプリケーションを構築するのを助けるための多くのセキュリティ機能を提供します。これには、クロスサイトスクリプティング (XSS) 保護、クロスサイトリクエストフォージェリ (CSRF) 保護、SQLインジェクション保護などが含まれます。
これらの特徴により、DjangoはWebアプリケーション開発のための強力なフレームワークとなっています。次のセクションでは、Djangoを使用してHTMLファイルを作成する方法について詳しく説明します。
DjangoでのHTMLファイルの作成
Djangoでは、HTMLファイルはテンプレートとして扱われます。これらのテンプレートは、Djangoのビューによってレンダリングされ、ブラウザに送信される完成したHTMLページを生成します。
以下に、DjangoでHTMLファイルを作成する基本的な手順を示します:
-
テンプレートディレクトリの作成: Djangoはデフォルトでアプリケーションディレクトリ内の
templates
ディレクトリをテンプレートとして認識します。したがって、まずはじめにtemplates
ディレクトリを作成します。 -
HTMLファイルの作成: 次に、
templates
ディレクトリ内にHTMLファイルを作成します。例えば、home.html
という名前のファイルを作成することができます。 -
HTMLの記述: 作成したHTMLファイルには、通常のHTMLタグを使用してページの構造を記述します。また、Djangoテンプレート言語(DTL)を使用して動的な要素を追加することもできます。
<!DOCTYPE html>
<html>
<head>
<title>My Django App</title>
</head>
<body>
<h1>Welcome to my Django App!</h1>
<p>Hello, {{ user.username }}!</p>
</body>
</html>
上記のHTMLファイルでは、{{ user.username }}
という部分がDjangoテンプレート変数となっています。この部分は、ビューから渡されたコンテキストデータ(この場合はuser
オブジェクト)によって置き換えられます。
- ビューの作成: Djangoビューは、テンプレートをレンダリングし、HTTPレスポンスを生成します。ビュー内で、
render
関数を使用してHTMLファイル(テンプレート)をレンダリングします。
from django.shortcuts import render
def home(request):
return render(request, 'home.html', {'user': request.user})
上記のビューでは、home.html
テンプレートをレンダリングし、request.user
をテンプレート変数user
として渡しています。
- URLの設定: 最後に、作成したビューをURLに接続します。これにより、ブラウザから特定のURLにアクセスされたときに、対応するビューが呼び出され、HTMLページが表示されます。
以上が、DjangoでHTMLファイルを作成する基本的な手順です。次のセクションでは、Djangoテンプレートの基本について詳しく説明します。
Djangoテンプレートの基本
Djangoテンプレートは、動的なWebページを生成するためのツールです。テンプレートはHTMLを含むが、その中にはDjangoテンプレート言語(DTL)と呼ばれる特殊なマークアップも含まれています。これにより、テンプレートは動的なデータを表示したり、制御フローを実装したりすることができます。
以下に、Djangoテンプレートの基本的な要素をいくつか紹介します:
- 変数: Djangoテンプレートでは、二重中括弧
{{ }}
を使用して変数を表示します。これらの変数は、ビューからテンプレートに渡されるコンテキストデータから取得されます。
<p>Hello, {{ user.username }}!</p>
上記の例では、user.username
は現在ログインしているユーザーのユーザー名を表示します。
- フィルター: フィルターは、変数の表示を変更するために使用されます。フィルターはパイプ記号
|
を使用して変数に適用されます。
<p>{{ some_date|date:"Y-m-d" }}</p>
上記の例では、date
フィルターはsome_date
変数の表示形式を変更します。
- タグ: Djangoテンプレートタグは、テンプレート内でロジックを実装するために使用されます。タグは中括弧とパーセント記号
{% %}
を使用して表示されます。
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}!</p>
{% else %}
<p>Please log in.</p>
{% endif %}
上記の例では、if
タグはユーザーが認証されているかどうかを判断し、それに応じて異なるメッセージを表示します。
これらはDjangoテンプレートの基本的な要素ですが、Djangoテンプレートはこれらに加えて、継承、インクルード、カスタムテンプレートタグとフィルターなど、より高度な機能も提供しています。これらの機能により、Djangoテンプレートは強力で柔軟性のあるツールとなっています。次のセクションでは、DjangoでのHTML表示について詳しく説明します。
DjangoでのHTML表示
Djangoでは、HTMLの表示はビューとテンプレートを使用して行います。ビューは、リクエストに対するロジックを処理し、テンプレートはHTMLの構造を定義します。これらを組み合わせることで、動的なWebページを生成します。
以下に、DjangoでHTMLを表示する基本的な手順を示します:
- ビューの作成: DjangoビューはPythonの関数またはクラスで、特定のURLにアクセスされたときに実行されます。ビューはリクエストを受け取り、HTTPレスポンスを返します。このレスポンスは通常、レンダリングされたテンプレートから生成されます。
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
上記の例では、home
ビューはhome.html
テンプレートをレンダリングし、その結果をHTTPレスポンスとして返します。
- テンプレートの作成: DjangoテンプレートはHTMLファイルで、動的なデータを表示するためのプレースホルダー(変数)を含むことができます。
<!DOCTYPE html>
<html>
<head>
<title>My Django App</title>
</head>
<body>
<h1>Welcome to my Django App!</h1>
</body>
</html>
上記の例では、home.html
テンプレートは静的なHTMLページを定義しています。
- URLの設定: DjangoのURL設定は、URLとビューをマッピングします。これにより、特定のURLにアクセスされたときにどのビューが実行されるかをDjangoに指示します。
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
上記の例では、ルートURL(''
)がhome
ビューにマッピングされています。したがって、ユーザーがウェブサイトのホームページにアクセスすると、home
ビューが実行され、home.html
テンプレートがレンダリングされます。
以上が、DjangoでHTMLを表示する基本的な手順です。次のセクションでは、Djangoテンプレートでの変数と命令の使用について詳しく説明します。
Djangoテンプレートでの変数と命令の使用
Djangoテンプレートでは、変数と命令を使用して動的なHTMLを生成します。これらは、テンプレート内の特殊なマークアップを使用して記述されます。
変数
Djangoテンプレートでは、二重中括弧{{ }}
を使用して変数を表示します。これらの変数は、ビューからテンプレートに渡されるコンテキストデータから取得されます。
<p>Hello, {{ user.username }}!</p>
上記の例では、user.username
は現在ログインしているユーザーのユーザー名を表示します。
命令
Djangoテンプレートでは、中括弧とパーセント記号{% %}
を使用して命令を記述します。命令は、テンプレート内でロジックを制御するために使用されます。
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}!</p>
{% else %}
<p>Please log in.</p>
{% endif %}
上記の例では、if
命令はユーザーが認証されているかどうかを判断し、それに応じて異なるメッセージを表示します。
フィルター
フィルターは、変数の表示を変更するために使用されます。フィルターはパイプ記号|
を使用して変数に適用されます。
<p>{{ some_date|date:"Y-m-d" }}</p>
上記の例では、date
フィルターはsome_date
変数の表示形式を変更します。
これらの要素を組み合わせることで、Djangoテンプレートは動的なWebページを生成します。次のセクションでは、DjangoでのHTML/CSS表示について詳しく説明します。
DjangoでのHTML/CSS表示
Djangoでは、HTMLとCSSを使用してWebページの見た目を制御します。HTMLはページの構造を定義し、CSSはページのスタイルを定義します。以下に、DjangoでHTMLとCSSを表示する基本的な手順を示します:
-
HTMLの表示: Djangoでは、HTMLはテンプレートとして扱われます。テンプレートはビューによってレンダリングされ、その結果がブラウザに送信されます。テンプレート内では、Djangoテンプレート言語(DTL)を使用して動的なデータを表示したり、制御フローを実装したりすることができます。
-
CSSの表示: Djangoでは、CSSは静的ファイルとして扱われます。静的ファイルは、アプリケーションの一部ではなく、変更されることなくそのまま提供されるファイルです。CSSファイルは通常、アプリケーションディレクトリ内の
static
ディレクトリに保存されます。 -
静的ファイルの設定: Djangoでは、静的ファイルは特別な設定を必要とします。
settings.py
ファイル内で、STATIC_URL
とSTATICFILES_DIRS
の設定を行う必要があります。
# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
- HTML内でのCSSの使用: HTMLテンプレート内でCSSを使用するには、
{% load static %}
タグを使用して静的ファイルをロードし、{% static 'path/to/css/file' %}
タグを使用してCSSファイルへのパスを生成します。
{% load static %}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
</head>
<body>
<!-- ... -->
</body>
</html>
以上が、DjangoでHTMLとCSSを表示する基本的な手順です。これらの手順を組み合わせることで、Djangoでは動的なWebページを生成し、その見た目を制御することができます。次のセクションでは、DjangoでのHTML/CSS表示について詳しく説明します。