1. HOME
  2. ブログ
  3. エンジニアリング
  4. 【Django】SNSを作って学ぶ本格チュートリアル

BLOG

ブログ

エンジニアリング

【Django】SNSを作って学ぶ本格チュートリアル

本チュートリアルでは、SNS開発を通してDjangoの開発方法の基礎知識を学んでいきます。

  • Pythonを学んだのでWebアプリ開発に挑戦してみたい
  • 転職用ポートフォリオをDjangoで作りたい
  • Djangoで個人開発してみたい

という方にはとてもおすすめの内容になっています。

作るもの

今回作るのは、犬の画像を投稿・シェアできる「イヌスタグラム🐾」。可愛いワンちゃんたちの写真を共有しながら、ユーザー登録や画像投稿、認証機能などの実践的なDjangoスキルを習得していきます。Web開発の基礎から、ちょっとしたデザインの工夫まで、あらゆる工程を段階的に解説するので、初心者の方でも安心です。

チュートリアルの全体像

第1章: Djangoの開発環境を構築しよう (now🐾)

第2章: カスタムユーザー作成と認証導入

第3章: ユーザー登録機能を実装

第4章: Tailwindを使って綺麗なページを作る

第5章: SNSのDB設計・モデル定義をしよう

第6章: 画像アップロードの実装方法を解説

第7章: SNSアプリの投稿機能を実装しよう

開発環境構築

Dockerインストール

以下のサイトからDockerをインストールします。

https://www.docker.com/ja-jp

開発環境構築コード取得

git clone https://github.com/techinit-blog/django-inusta-workspace

Docker起動

先ほどインストールしたDockerをクリックして起動します。

Dockerコンテナ起動

以下のコマンドでDockerコンテナを起動します。

cd django-inusta-workspace
docker compose up -d --build

Djangoプロジェクト作成

docker compose run app django-admin startproject myapp .

以下のようにDjangoプロジェクトファイルが生成されます。

.
├── assets
├── compose.yml
├── docker
├── manage.py
└── myapp
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

localhost:8000にアクセスして、以下のページが表示されれば成功です!

myapp/settings.pyの設定を以下のように書き換えます。

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "database",
        "USER": "user",
        "PASSWORD": "password",
        "HOST": "db",
        "PORT": "3306",
    }
}

素材

先ほどダウンロードした inusta-workspace/assets 内に画像ファイルを置いてあります。

投稿を作成するときのサンプル画像としてお使いください。

Djangoの特徴

環境構築が完了したところで、Djangoの特徴を解説していきます。

細かい内容は、後の章で詳しく解説するので、まずは概要をつかむことを意識してください。

Djangoは、Pythonで書かれたフルスタックのWebフレームワークで、迅速な開発とクリーンな設計に焦点を当てています。その特徴を理解することで、これから進めていく開発の土台がしっかりと見えてきます。

迅速な開発 Djangoは「再発明をしない」方針を採用しており、開発者がよく使う機能(認証、管理画面、フォーム処理など)がすでに含まれているため、0から実装する手間を省き、より短期間でアプリを作成できます。特に、短いコードで多機能なアプリを開発できるため、効率よくプロジェクトを進められます。

MVTアーキテクチャ Djangoは「Model-View-Template(MVT)」というアーキテクチャに基づいており、アプリケーションの開発を分かりやすく整理できます。

  • Model(モデル): データベースの構造を定義し、アプリケーションとデータベース間のデータ処理を担います。
  • View(ビュー): ビジネスロジックを実行し、モデルからデータを取得してテンプレートに渡します。
  • Template(テンプレート): HTMLなどのファイルとして、ビューから渡されたデータを基に画面に表示します。
このMVTアーキテクチャにより、コードの保守や機能追加がしやすく、規模の大きなプロジェクトでも効率よく開発を進められます。

Djangoの管理画面 Djangoには、開発者向けの強力な管理画面が標準で組み込まれており、データベース内のデータをGUIで管理できます。この管理画面は、少しの設定で即座に利用可能になり、特別なカスタマイズをすることなく、簡単にデータの確認・編集・削除などが可能です。管理画面の利用は、プロジェクト開発における効率を大幅に向上させ、特に初期段階のデータ管理やテストに役立ちます。

豊富な機能と拡張性 Djangoは、ユーザー認証、セキュリティ(CSRF対策やSQLインジェクション防止)、フォーム処理、メール送信、ファイルアップロードなど、Webアプリケーションでよく必要とされる機能をあらかじめ備えています。これにより、開発者はこれらの機能を0から作成する必要がなく、迅速にプロジェクトの構築ができます。また、Djangoは拡張性も高く、さまざまなプラグインやライブラリを利用することで、カスタマイズも容易です。

スケーラビリティとセキュリティ Djangoは、個人開発から大規模な商業アプリケーションまで対応できるスケーラビリティを備えています。安全なデフォルト設定がされており、セキュリティに関する懸念事項も十分に考慮されています。データベースやフォームのバリデーション機能に加えて、セキュリティ機能が強化されているため、一般的なWebセキュリティリスク(SQLインジェクション、XSS攻撃など)を自動的に回避することができます。


Djangoの管理画面

Djangoの強力な機能のうちの一つが、管理画面(Admin Interface)です。わずかな設定で利用でき、データベースのデータを簡単に管理できるようになります。開発者や管理者がアプリケーションのデータを視覚的に操作できるため、特にバックエンドの管理が簡単になります。

管理画面のアクセス Djangoのプロジェクトを作成後、スーパーユーザー(管理者)アカウントを作成することで、管理画面にアクセスできます。http://localhost:8000/admin/にアクセスし、スーパーユーザーの認証情報を入力すると、すぐに使えるようになります。

機能 管理画面では、以下のような操作が可能です。

  • データの閲覧: データベースに保存されているモデルのレコード(データ)を一覧表示できます。
  • データの作成・編集・削除: 新しいレコードの追加や、既存のデータの編集、削除ができます。
  • フィルタリングと検索: 複数の項目でデータを検索したり、フィルターを使って特定のデータのみを抽出したりできます。
  • 拡張可能: モデルに対するカスタムアクションの追加や、フォームの表示項目を自由に変更することも可能です。

簡単な設定 Djangoの管理画面は、admin.pyで設定されているモデルを登録するだけで、即座に管理対象として利用できます。これにより、データベースのデータ操作をコードに触れることなくGUIで行えるため、管理の負担が大幅に軽減されます。

カスタマイズ可能 管理画面は、ただデフォルトのUIを使うだけでなく、必要に応じて表示内容や操作を自由にカスタマイズできます。たとえば、表示するフィールドやリストに含める項目を変更したり、管理者だけに見せたい項目を設定することができます。

Djangoの管理画面は、簡単に始められるだけでなく、柔軟にカスタマイズできるため、非常に便利で強力なツールです。実際の開発でも頻繁に利用することになるため、しっかりと理解しておくことが重要です。

このように、Djangoの特徴と管理画面の利用方法を理解することで、効率的かつ安全なWebアプリケーション開発を進めるための基礎が固まります。次に進む段階で、Djangoの各要素を活用しながら、実際のアプリケーション作成に取り組んでいきましょう。

まとめ

以上で環境構築は終了です。

それではチュートリアルを始めていきましょう!

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

関連記事