今更一から勉強しよう

勉強のノート。

Python、Djangoでオリジナルのシステム開発(1)

PythonDjangoで開発の練習のためにオリジナルのシステムを構築する。

システム要件

「自動献立システム」

  • 好きな献立を入力する
  • 今ある食材を入力する
  • おすすめの献立を表示する
  • 今ある食材を自動管理する

画面構成

  • ログイン画面
  • メニュー画面
  • 献立入力画面
  • 食材入力画面
  • 献立表示画面

ログイン画面を開発する

さあ始めよう。 HTMLを作成しつつ、URLパスを通す。

プロジェクトのurls.py

from django.urls import path, include
path('RA/login', include('login.urls'))

loginアプリケーションの下にurls.pyを作成。

from django.urls import path
from . import views
urlpatterns = [
path('', views.login, name='login'),
]

templatesの下にlogin.htmlを作成。

<!DOCTYPE html>
{% load i18n static %}
{% get_current_language as LANGUAGE_CODE %}
<html lang="{{ LANGUAGE_CODE|default:'ja' }}">
<head>
<meta charset="UTF-8">
<title>ログイン</title>
</head>
<body>
<label for="user_id" >ユーザID</label>
<input type="text" id="user_id" maxlength="9" name="user_id">
<label for="password" >パスワード</label>
<input type="password" id="password" maxlength="20" name="password" >
</body>
</html>

ログインのview.py

from django.shortcuts import render
def login(request):
return render(request, 'SC1010login/SC1010login.html')

ログイン画面のベースが表示されるようになった。 f:id:ebi40:20200328111714p:plain

Bootstrapを導入し、装飾する。
参考:Python Django入門 (4) - Qiita
インストール:Download · Bootstrap
インストール:Download jQuery | jQuery
参考:サインインページの実例~Bootstrap4移行ガイド

  • 解凍したBootstrapをstaticフォルダの下に入れる。
  • 以下をHTMLに追記
  • <link rel="stylesheet" href="{% static 'css\bootstrap.min.css' %}">
  • <script src="{% static 'js\jquery-3.4.1.min.js' %}"></script>
  • <script src="{% static 'js\bootstrap.bundle.min.js' %}"></script>

データベースにログインテーブルを作成する。
データベースを集中管理するアプリケーションを作成。

python manage.py startapp database

settings.pyに追加。

'database.apps.DatabaseConfig',

データベースアプリケーションのmodels.pyに定義を記述。

class User(models.Model):
"""ユーザ"""
user_id = models.CharField('ユーザID', max_length=8)
password = models.CharField('パスワード', max_length=20)
def __str__(self):
return self.user_id

変更をDjangoに通達、DBに反映。

python manage.py makemigrations database
python manage.py migrate

Django管理画面でユーザを作成できるようにする。 database/admin.py

from django.contrib import admin
from . models import User
admin.site.register(User)

f:id:ebi40:20200328163837p:plain