プログラミング ときどき 雑談

コードと猫と、ひとさじのコーヒー。横浜の片隅から、プログラミング学習の日々と、ふとしたつぶやきをお届けします。

【Django入門】AIと一緒に!Webアプリ開発インストールからデータ表示までで私がつまずいた全ポイント

こんにちは!気ままなねぎとろ♪です。😊

猫が好きすぎて、ついに「猫グッズ紹介サイト」を自作することにしました! 使う技術は、PythonのWebフレームワーク「Djangoです。プログラミング経験は少しあるものの、Djangoは全くの初心者。

今回は、Geminiに手伝ってもらいながら、Djangoのインストールから、データベースに登録した最初のデータをブラウザに表示するまで、一気に駆け抜けてみました!

初心者がどこでつまずいて、どう解決したのか、リアルな奮闘記としてお届けします。 これからDjangoを始めるあなたの、ちょっとした道しるべになれたら嬉しいです!


1. Djangoのインストールとプロジェクト作成

まずは、建築ツールであるDjangoを自分のPCにインストールするところから! VSCodeのターナルで、この呪文を唱えます。

pip install django

💥いきなりつまずきポイント①:PATHが通ってない!

インストールは成功したのに、django-admin --versionで確認しようとすると「そんなコマンド知らないよ!」と怒られちゃいました。

Geminiに聞いたところ、これは「道具箱の場所をPCが知らない」という、Windowsでよくある現象だそうです。 これ以降、django-adminの代わりにpython -m djangoを使うことで、無事に解決!

# プロジェクト(サイトの骨組み)を作成
python -m django startproject nekogoods_project .

# アプリ(猫グッズ機能)を作成
python manage.py startapp goods

無事に、サイトの土台が完成しました!


2. データベースの設計図を作る(models.py)

次に、どんな情報をサイトに保存するか、データベースの設計図models.pyを書いていきます。 今回は、こんな感じにしてみました。

from django.db import models

# Create your models here.

class Product(models.Model):
    name = models.CharField('商品名', max_length=200)
    description = models.TextField('商品説明')
    price = models.IntegerField('価格')
    image_url = models.URLField('商品画像のURL', max_length=200)
    affiliate_url = models.URLField('アフィリエイトURL', max_length=200)

    def __str__(self):
        return self.name

商品名価格アフィリエイトURLなどを保存できるようにしています。


3. データベースを組み立てる(マイグレーション

設計図ができたら、それを元に本物のデータベースを作ります。 この作業を「マイグレーション」と呼ぶそうです。これも呪文を2回唱えるだけ!

# 組み立て指示書を作成
python manage.py makemigrations

# 指示書を元に、データベースを組み立て!
python manage.py migrate

これを実行すると、db.sqlite3という、データベースファイルが誕生しました!


4. 司令室(管理画面)の準備

Djangoには、作ったデータベースを簡単に見たり、編集したりできる「管理画面」という最高の機能がついています。 これを使うために、管理人(スーパーユーザー)を作成し、admin.pyに「Productモデルも管理画面で使いますよ〜」と登録しました。

# 管理人を作成
python manage.py createsuperuser
from django.contrib import admin
from .models import Product

admin.site.register(Product)

そして、python manage.py runserverで開発用サーバーを起動して、/adminにアクセス! ログインすると、自分だけの秘密の司令室に入れて、なんだかテンションが上がります!


5. ショーウィンドウを作る(Views & Templates)

いよいよ、お客さんに見えるページ作りです! データベースの情報を、どのようにお客さんに見せるかを決めます。

  • views.py(司令官): データベースから「全商品を持ってきて!」と命令。
  • product_list.html(デザイナー): 司令官が持ってきた商品を、HTMLでおしゃれに飾り付け。

forループを使って、データベースにある商品を一つずつ表示していきます。


6. 入り口を作る(urls.py)

司令官とデザイナーの準備ができても、お客さんをそこに案内しないと意味がありません。 そのための「案内標識」がurls.pyです。

💥いきなりつまずきポイント②:ModuleNotFoundError!

Geminiに言われた通りに2つのurls.pyを編集したはずが、「goods.urlsが見つからない」というエラーが…。 ファイル名も合ってるし、__init__.pyもある…。なんで!?とパニックに。

原因は、nekogoods_project/urls.pyを編集した時に、元々書いてあった説明文("""...""")を消してしまったことでした。あんなただのコメントに見えるものが、そんなに大事だったなんて…。

正しいコードに直して、サーバーをCtrl+Cで手動再起動したら、無事にサーバーが起動!


7. そして、ついにページが…!

ブラウザでhttp://127.0.0.1:8000/にアクセスすると…ついに!

管理画面で登録した「肉球型修正テープ」の情報が、ちゃんと表示されていました! (最初は画像が表示されませんでしたが、アフィリエイト用の画像URLではなく、画像の「アドレス」を直接指定することで解決しました。)


おわりに

というわけで、Djangoインストールから、最初のデータ表示までの道のりでした! エラーが出るたびに「うわー!」ってなりましたが、一つずつ解決していく過程は、なんだかRPGのクエストみたいで、すごく楽しかったです。

何より、自分の手でWebアプリが動く感動は、本当に大きいですね!

これからは、このサイトの見た目をCSSでおしゃれにしたり、機能を追加したりしていきます。 その過程も、またブログで報告しますね!

最後まで読んでいただき、ありがとうございました!

気ままなねぎとろ♪でした。😊