Python

Django

【Django】ForeignKey・ManyToManyでリレーションを組む【Django】

こんにちは、かつコーチです。前回はモデルの基本フィールドとCRUD操作を解説しました。今回は、テーブル同士を関連づける「リレーション」の書き方を扱います。ブログアプリなら「記事とカテゴリ」「記事とタグ」のように、モデル同士がつながる場面は必...
Django

【Django】モデルの基本:フィールドタイプとCRUD操作

こんにちは、かつコーチです。前回はマイグレーションの流れを解説しました。今回はその前提となるモデル自体の書き方と、データの作成・取得・更新・削除、いわゆるCRUD操作の基本をまとめます。モデルとは何かPythonのクラスがテーブルの設計図に...
Django

【Django】makemigrations/migrateの基本:モデルをDBに反映する

こんにちは、かつコーチです。ここからは「データベース・ORM」編に入ります。Djangoでモデルを定義しても、それだけではデータベースに変化は起きません。makemigrationsとmigrateという2つのコマンドを実行して、初めてデー...
Django

【Django】Django Adminをカスタマイズして管理画面を使いこなす

こんにちは、かつコーチです。Djangoの大きな魅力のひとつが、管理画面(Admin)が標準で用意されている点です。とはいえ、デフォルトのままだと使いづらい部分も多く、実務ではほぼ必ずカスタマイズします。今回はDjango Adminの基本...
Django

【Django】クラスベースビュー(CBV)の基本と使いどころ

こんにちは、かつコーチです。これまで関数ベースビュー(FBV)でビューを書いてきましたが、Djangoにはもうひとつクラスベースビュー(CBV)という書き方があります。「FBVで慣れたのに、なぜわざわざクラスで書くの?」と感じる人も多いと思...
Django

【Django】テンプレートの基本とテンプレートタグの使い方

こんにちは、かつコーチです。前回はビュー(View)の書き方を解説しました。ビューで用意したデータを、実際に画面のHTMLへ表示するのがテンプレートの役割です。今回はDjango 5系を前提に、テンプレートの基本構文とよく使うテンプレートタ...
Django

【Django】関数ベースビュー(FBV)の書き方

こんにちは、かつコーチです。前回の記事でurls.pyからviews.pyの処理を呼び出す流れを紹介しましたが、今回はその「処理」そのものを担当するViewの書き方を詳しく解説します。Djangoには2種類のViewの書き方があり、その1つ...
Django

【Django】urls.pyでルーティングを設定する基本

こんにちは、かつコーチです。前回の記事でDjangoのディレクトリ構成を紹介した際、「urls.pyはルーティングの起点になる」と説明しました。この記事では、実際にurls.pyを編集しながら、URLと処理を結びつけるルーティング(どのUR...
Django

【Django】MTVパターンとDjangoのディレクトリ構成を理解する

こんにちは、かつコーチです。前回の記事でdjango-admin startprojectを実行し、プロジェクトの雛形を作成しました。でも、生成されたフォルダやファイルを見て「これは何のためのファイルなんだろう」と戸惑った人も多いはずです。...
Django

【Django】django-admin startprojectでプロジェクトを作成する手順

こんにちは、かつコーチです。「Djangoとは?」の記事でDjangoの概要を紹介しましたが、実際に手を動かさないとイメージはつかめません。この記事では、Django 5系を前提に、django-admin startprojectコマンド...
Django

【Django】Djangoとは?「バッテリー同梱」のPythonフレームワークを初心者向けに解説

こんにちは、かつコーチです。「Pythonを勉強したから、次はWebアプリを作ってみたい」と思ったとき、多くの人がぶつかるのがDjango(ジャンゴ)という名前です。聞いたことはあっても、「結局何ができるのか」「他のフレームワークと何が違う...
Python

【Python】比較検証 : PythonとRuby、初心者に向いているのはどちらか

こんにちは、かつコーチです。これでPython基礎編は60本目、最終回です。「プログラミングを始めるなら、PythonとRubyどちらがいいですか」これは、学習相談を受けるたびに聞かれる質問トップ3に入る内容です。どちらも「読みやすい」「初...
Python

【Python】簡単なCLIツールを作ってみる(argparse活用)

こんにちは、かつコーチです。「毎回同じフォルダ整理のスクリプトを書き換えて実行している」そんな手間を感じたことはないでしょうか。コマンドライン引数を受け取れるようにすれば、1つのスクリプトを使い回せるCLIツールに育てられます。この記事では...
Python

【Python】PEP8に沿ったコードスタイルとlinter(Ruff)の使い方

こんにちは、かつコーチです。「チームメンバーによってインデントや命名がバラバラで、レビューのたびに指摘が発生する」そんな悩みを持つ現場は少なくありません。PythonにはPEP8という公式のコードスタイルガイドがあり、これに沿っているかを自...
Python

【Python】dataclassでシンプルにクラスを定義する

こんにちは、かつコーチです。「データを保持するだけのクラスなのに、__init__や__repr__を毎回手書きしている」そんな面倒さを感じたことはないでしょうか。Pythonには、そうした定型コードを自動生成してくれるdataclassと...
Python

【Python】循環importでハマった話と解決法

こんにちは、かつコーチです。「さっきまで動いていたのに、ファイルを1つ分割しただけでImportErrorが出るようになった」そんな経験はないでしょうか。原因を探ると、AがBをimportし、BもAをimportしている循環importだっ...
Python

【Python】Noneの扱い方でハマらないために

こんにちは、かつコーチです。「AttributeError: 'NoneType' object has no attribute '◯◯'」。Pythonを書いていると、このエラーに一度は出会うのではないでしょうか。私自身、初心者の頃にこ...
Python

【Python】try-exceptで例外処理を書く基本

こんにちは、かつコーチです。「ユーザーが数字以外を入力したらプログラムが落ちてしまう」「ファイルが存在しないだけで処理が止まってしまう」。こうした問題を防ぐために使うのが例外処理です。例外処理とは、エラーが発生してもプログラムを止めずに、あ...
Python

【Python】よくあるPythonエラーの読み方(IndentationError等)

こんにちは、かつコーチです。Pythonを書き始めたばかりの頃、赤い文字でエラーが表示されると「何が起きたのか分からない」と手が止まってしまうことはありませんか。私自身も学習を始めたころ、エラーメッセージを読まずにコードを闇雲に書き換えて、...
Python

【Python】PDFファイルをPythonで操作する(PyPDF2)

こんにちは、かつコーチです。「複数のPDFを1つに結合したい」「特定のページだけ抜き出したい」「PDFから文字を検索できるようにしたい」。PDF操作は手作業だと地味に面倒な作業です。そんなときに便利なのが、Pythonのpypdf(旧PyP...