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?

Python Djangoを使ってみる(自分用)

Last updated at Posted at 2024-10-13

現時点で明確に作りたいwebアプリがあるわけではないが、フレームワークを使い方がわからないと何が作れるかもよくわからない。
とりあえず使い方を理解しながら、概念的なものをインプットし、簡単なアウトプットをしていきたい。

目次
1.フレームワークとは
2.なぜ使うのか
3.よく使われるWebフレームワーク(GPT調べ)
4.Djangoを使ってみる
5.ディレクトリ構造
6.アプリケーション作成
7.開発用サーバーの起動

1.フレームワークとは

Web開発におけるフレームワークとは、ウェブサイトやウェブアプリケーションを効率的に開発するために、事前に用意されたコードやツール。
とりあえず「設計図」と「部品」が揃った便利なものと理解しておく。

フレームワークの役割
Webサイトやアプリをゼロから作るのはとても大変です。HTML, CSS, JavaScriptの他にも、データベースとの連携やユーザー管理など、必要なことがたくさんあります。これらをすべて一から自分で作るのは、まるで木材を切り出して釘やハンマーも自作して家を建てるようなもの。
フレームワークを使えば、よく使う「部品」(機能やコード)がすでに揃っているので、それらを組み合わせたり、カスタマイズしたりするだけで、効率的に開発を進めることができます。たとえば、ユーザーの登録やログイン機能、フォームの送信機能、データベース操作など、よく使われる機能を簡単に実装できる。

2.なぜ使うのか?

時間の節約: よく使う機能が最初から用意されているため、ゼロから作るよりも早く開発が可能。
セキュリティ: フレームワークは一般的に、セキュリティの面でも配慮されている。
保守性: フレームワークを使うと、コードが整理されやすく、後の保守が容易。

3.よく使われるWebフレームワーク(GPT調べ)

Django (Python): データベースとの連携が得意で、素早くウェブアプリを開発できます。安全性も高いです。
Flask (Python): シンプルで軽量なフレームワーク。小規模なアプリや、Djangoよりも自由度が高い開発に向いています。
streamlit (Pyrhon): データサイエンスやデータビジュアライゼーションのために作られた、シンプルで、Pythonのコードを書く感覚で、インタラクティブなウェブアプリをすぐに作成可能。
Ruby on Rails (Ruby): 簡単に強力なアプリを作れるRubyのフレームワーク。スタートアップでよく使われています。
Laravel (PHP): PHPで人気のフレームワークで、初心者にも優しく、様々な機能がすぐに使えます。
Express (Node.js): JavaScriptを使ったサーバーサイドフレームワーク。シンプルで非常に高速な開発が可能です。

例えば、Djangoを使うと、家(アプリ)を建てる時に壁や屋根、窓などのパーツが既に揃っていて、それらを組み立てていくだけで、すぐに住める家ができます。もし、Djangoを使わないでゼロから家を建てる場合、木材を伐採して、工具を自作して、壁や屋根も全て手作りしなければならないので、非常に時間がかかります。・・・なるほど

例えるとすれば、こんな感じ?
フレームワークなし:林業、建築士、大工など全てを自分で多能工として作る
フレームワークあり:ハウスメーカー

自分なりにこのように理解したが、意義異論は認める。

4.Djangoを使ってみる

Pythonでは、DjangoかFlaskがよく使われているらしく、使い方について書いてある記事も多い。
とりあえずDjangoなら何でもできそうなので、使ってみることにする。

手順1. Djangoをインストールする

# Djangoをインストール
pip install django

手順2. Djangoプロジェクトを作る

# Djangoのバージョンを確認
python -m django --version

# Djangoプロジェクトを作成する 
# 任意のプロジェクト名(ここではmyproject)
django-admin startproject myproject

5.ディレクトリ構造

生成されたディレクトリ構造を確認する
Djangoで新しいプロジェクトを作成すると、以下のようなディレクトリ構造が生成される

# 生成されたディレクトリ構造

myproject/
│
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── asgi.py
│   └── wsgi.py
└── db.sqlite3 (データベースファイル、初期状態ではまだ作成されていない)

各ファイル・ディレクトリの役割

manage.py(プロジェクトの根幹となるスクリプトファイル)
Djangoプロジェクト全体を管理するスクリプトです。このファイルを使って、サーバーの起動、マイグレーションの実行、アプリの作成などを行います。たとえば、開発用サーバーを起動するには次のコマンドを実行します。

# 開発用サーバーの起動
python manage.py runserver

myproject/ (プロジェクトのメインディレクトリ)
プロジェクトの設定やルーティングに関連するファイルが含まれています。このディレクトリ名は、作成したプロジェクト名と一致します。
ディレクトリ構造を見ても直感的にはよくわからないので、こちらの図解を参照。

init.py (基本的に触らない)
Pythonにこのディレクトリがパッケージであることを知らせる空のファイル。基本的には何も書かれていない。

settings.py(VScodeのsetting.jsonみたいなもの?)
プロジェクト全体の設定ファイルです。データベース設定、デバッグモード、インストールされているアプリケーション、テンプレートエンジンの設定などが記載されている。

urls.py(URLと処理を紐付けするファイル)
URLルーティングの設定ファイルです。各URLに対してどのビュー(機能)を呼び出すかを定義します。プロジェクト全体のルート設定がここに書かれますが、アプリごとに個別の urls.py を持つことが一般的。

asgi.py
ASGI (Asynchronous Server Gateway Interface) 用のエントリーポイントです。DjangoをASGI対応サーバーで実行するための設定が含まれている。
よくわからん。

wsgi.py
WSGI (Web Server Gateway Interface) 用のエントリーポイントです。DjangoをWSGI対応サーバー(たとえば、GunicornやuWSGI)で実行するための設定が含まれています。
よくわからん。

db.sqlite3 (まだ作成されていない場合もあり)
Djangoのデフォルト設定では、SQLiteという軽量なデータベースが使われます。このファイルは初期状態では存在しませんが、python manage.py migrate コマンドを実行すると、プロジェクトのデータベースとして db.sqlite3 が作成されます。

6.アプリケーション作成

Djangoにおけるアプリケーションとは、いわゆるデスクトップアプリとかwebアプリとは少し解釈を変える必要がある。
ここでは一旦、アプリケーション = 機能をまとめた箱 と定義しておく。

手順1.プロジェクトに新しいアプリケーション(機能)を追加

アプリケーションを追加する
'django-admin startapp myapp'

作成したアプリケーションのディレクトリへ移動
cd myapp

手順2.作成したアプリケーション(機能)をプロジェクトに追加

作成したアプリケーション myapp をプロジェクトに追加するため、myproject/settings.py を開き、INSTALLED_APPS に myapp を追加する。

myproject/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',  # 管理サイト
    'django.contrib.auth',   # 認証システム
    'django.contrib.contenttypes', # コンテンツタイプフレームワーク
    'django.contrib.sessions', # セッションフレームワーク
    'django.contrib.messages', # メッセージフレームワーク
    'django.contrib.staticfiles', # 静的ファイルの管理フレームワーク
    'myapp',  # ここにアプリを追加
]

手順3. ビューを作成する(処理の定義)
myapp/views.py ファイルを開き、シンプルなビューを作成します。
ビューはという概念がよくわからないので、処理の定義と覚える。

myapp/views.py
from django.http import HttpResponse

def welcome_view(request):
    return HttpResponse("ようこそ")

手順4. ルーティング設定(URLと処理の紐付け)
myproject/urls.py を編集して、welcome_view を表示できるようにURLを設定する。

myproject/urls.py
from django.contrib import admin
from django.urls import path
from myapp.views import welcome_view  # ビューをインポート

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', welcome_view),  # ルートURLでようこそを表示
]

6.開発用サーバーを起動

開発用サーバーを起動し、http://127.0.0.1:8000/ アクセスする。

python manage.py runserver

画面に「ようこそ」と表示されたらOK!

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?