Django: обработка логики после транзакции - PullRequest
0 голосов
/ 10 октября 2011

Общий вариант использования:

  1. Пользователь выбирает элемент для добавления в корзину

  2. Пользователь производит оплату через платежный шлюз вне сайта, такой как PayPal илиworldpay

  3. Пользователь получает перенаправление на страницу оплаты и осуществляет платеж

  4. Портал оплаты отправляет запрос POST на URL-адрес обратного вызова

  5. Пользователь перенаправляется обратно на вашу страницу

На шаге 4 обычно происходит следующее:

  1. Обработка ошибок ипроверка на мошенничество

  2. Обновление моделей заказа / корзины и дополнительной логики

Мой вопрос относится к этому шагу 4:

В таких приложениях, как Django-Paypal , вместо того, чтобы выполнять всю логическую обработку в функции просмотра URL обратного вызова, вместо этого используются сигналы.Есть ли для этого веская причина?Почему бы просто не выполнить всю логику функции обратного просмотра URL?

1 Ответ

1 голос
/ 10 октября 2011

Использование сигналов отделяет django-paypal от ваших собственных приложений.Вы можете иметь все виды сумасшедших нестандартных вещей, происходящих при успешной или неудачной оплате в ваших проектах, и при этом использовать представленное по умолчанию представление.

Представления на основе классов в Django 1.3 позволяют расширять представления и предоставлятьальтернативный способ отсоединения представления приложений.

Другие соображения, которые следует учитывать, прежде чем применять логику в представлениях, - время;если логика может занять много времени (как и любой ввод / вывод), спросите себя, имеют ли они решающее значение для имеющегося отклика, и рассмотрите возможность помещения его в очередь задач, чтобы вы могли обработать запрос быстро, без блокировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...