Я думаю о внедрении State Machine для проекта электронной коммерции - в частности, для рабочего потока из пустой корзины в состояние, в котором производится оплата.Реализация государственной машины для электронной коммерции (Django)
Кроме того, Корзина хранится в сеансе с использованием рамки сеанса Django. Я не могу окутать голову, должен ли конечный автомат быть частью реализации Cart или автономным, но «подключен» к Cart через 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 я смотрел на нее. Похоже, что это предназначено для моделей, если я храню информацию о штатах и тележках в сеансе, я не буду использовать модели ... fsm все еще актуально? Может быть, я пропустил что-то? –
жаль, что я пропустил, что вы используете сеанс. Ознакомьтесь с пакетом [переходы] (https://github.com/tyarkoni/transitions). A [обратный вызов] (https://github.com/tyarkoni/transitions#callbacks) для изменения статуса сеанса может быть присоединен, когда объект уходит или переходит в состояние. – Nghung