私は電子商取引プロジェクトのためのステートマシンを実装することを考えています - 特に、空のカートから支払いが行われる状態へのワークフロー。電子商取引用ステートマシンを実装する(Django)
さらに、カートはDjangoのセッションフレームワークを使用してセッションに格納されます。ステートマシンがカートの実装の一部であるかスタンドアローンであるべきか、APIを介してカートに「接続」されているかどうか、私の周りを頭で囲むことはできません。
私は理論的な概念にあまり慣れていないので、私は自分自身の研究から、私のプロジェクトにとって本当に役に立つようなものです。
私の思考プロセスのようなある:
state_machine.py
class StateMachine(object):
states = ['empty', 'filled', 'prepayment', 'payment_auth', 'order_placed']
... # methods that trigger state changes
とcart.py
で、各アクションは、状態の変化を誘発する可能性があります
state_machine = StateMachine()
class Cart(object):
...
def add_item(self):
...
# add item to cart
# then trigger state change
state_machine.fill_cart() --> triggers a state change from 'empty' to 'filled'
セッションのようなものを保存する必要がありますこれは:
request.session[some_session_key] = {
'state': 'filled',
'cart': {
# cart stuff goes here
},
...
}
私がやっていることが重複しているかどうかは分かりません。おそらくCart(別の属性)内に状態を実装し、別のオブジェクトとして実装するべきではないでしょうか。
アドバイスありがとうございます。
[ジャンゴ-FSM](https://github.com/kmmbvnr/django-fsm)あなたは、私はそれを見ていた – Nghung
@Nghungを必要とするものもあります。それはモデルのためのものだと思う、もし私がセッションで州とカートの情報を保存しているなら、私はモデルを使用しないだろう。たぶん私は何かを逃した –
申し訳ありません私はあなたがセッションを使用していることを逃した。 [移行](https://github.com/tyarkoni/transitions)パッケージをご覧ください。オブジェクトが状態を離れるか状態に入るとき、セッション状態を変更する[コールバック](https://github.com/tyarkoni/transitions#callbacks)を添付することができます。 – Nghung