python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...

目標

  • 注文管理アプリケーションの作成準備ができる。
  • 注文管理アプリケーションを既存アプリケーションに統合できる。
  • 商品注文処理に必要な最低限のロジックを作成できる。

注文管理アプリケーションの作成

注文管理アプリケーションの作成準備

ここからは、注文管理アプリケーションを作成します。まずは、注文管理アプリケーションに必要なディレクトリやファイルを作成し、統合作業を行います。その後、注文管理アプリケーションのプログラミングを進めます。

feature-ordersappブランチの作成

Git Bushを立ち上げdevelopブランチから次のコマンドを入力してfeature-ordersappブランチを作成して、ブランチの切り替えを行います。

git checkout -b feature-ordersappコマンド

プロンプトに(feature-ordersapp)と表示されます。注文管理アプリケーションはこのブランチで作成していきます。

注文管理アプリケーションに必要なディレクトリとファイルの作成

Visual Studio Codeのエクスプローラーから appsディレクトリ に ordersappディレクトリを作成します。

ordersappディレクトリのような追加のアプリケーションを作成する場合、既にあるアプリケーションの名前を変更して作業を行うとリファクタリングがうまくいかず、ルーティングがうまくいかない場合があります。アプリケーションの名前を新しい名前にしたい場合は、名前変更でなく、新規作成を行うのが良いです。

apps/ordersappディレクトリに次のディレクトリとファイルを作成します。※作成するファイルについては、名前や中身について、今後変更することものもあります。

  • static/css/style.css
  • templates/order_base.html
  • tamplates/order_form.html
  • tamplates/order_menu.html
  • app.py
  • forms.py
  • models.py

注文管理アプリケーションのプログラミング

この記事では次の処理が行えるプログラムを組んでいます。カート(session)を扱う処理は別の記事で扱います。

  • 各テーブルにアクセスがあった場合は伝票を新規で作成する。
  • アクセスに伴って、メニュー一覧が表示される。(商品は事前に登録済)
  • メニュー一覧の表示の右には注文した商品と合計額が表示される。
  • メニューから注文したい商品を選択すると注文フォームが表示される。
  • 注文フォームでは商品の個数を入力して注文を確定できる。(キャンセルボタンは未設定)

app.pyのプログラミング(ordersapp内)

app.pyファイルに次のプログラムを記述します。

import os

from flask import Blueprint, redirect, render_template, url_for

from apps.common.db import db
from apps.ordersapp.forms import OrderForm
from apps.ordersapp.models import Order
from apps.productsapp.models import Category, Product
from apps.tablesapp.models import Table

orders_bp = Blueprint(
    "orders",
    __name__,
    template_folder=os.path.join(os.getcwd(), "apps", "ordersapp", "templates"),
    static_folder=os.path.join(os.getcwd(), "apps", "ordersapp", "static"),
)


def create_orders_app(app):
    """Blueprintを新規作成し、登録する関数"""
    return orders_bp


@orders_bp.route("/order/table/<int:table_id>", methods=["GET"])
def order_menu(table_id):
    table = Table.query.get_or_404(table_id)
    categories = Category.query.all()
    products = Product.query.all()
    orders = Order.query.filter_by(table_id=table.id).all()

    total_amount = sum(order.total for order in orders)

    return render_template(
        "order_menu.html",
        products=products,
        orders=orders,
        table=table,
        categories=categories,
        total_amount=total_amount,
        title="メニュー一覧",
    )


@orders_bp.route(
    "/order/table/<int:table_id>/product/<int:product_id>", methods=["GET", "POST"]
)
def order_form(table_id, product_id):
    table = Table.query.get_or_404(table_id)
    product = Product.query.get_or_404(product_id)
    form = OrderForm()

    if form.validate_on_submit():
        quantity = form.quantity.data
        total = product.price * quantity

        order = Order(
            table_id=table.id,
            product_id=product.id,
            quantity=quantity,
            total=total,
            product_name=product.name,
        )
        db.session.add(order)
        db.session.commit()
        return redirect(url_for("orders.order_menu", table_id=table.id))

    return render_template(
        "order_form.html",
        form=form,
        product=product,
        table=table,
        title="注文フォーム",
    )

この続きはNoteとなります。

今回は以上になります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...