Как отобразить шаблон / перенаправить на шаблон после обработки сигнала django? - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь интегрировать django-paypal, и мне нужно обработать успешный или неудачный сигнал.

Я выполнил весь свой код, но теперь мне нужно отобразить шаблон, сообщающий пользователюих оплата прошла успешно или не удалась.

Если у меня return HttpResponseRedirect... ничего не происходит, и я не могу render_to_response, потому что у меня нет доступа к контексту (и я использую sekazai или что-то еще).

Как я могу это сделать?

## Called when django-paypal fails to validate PDT data
def pdt_failed_transaction(sender, **kwargs):
    return HttpResponseRedirect(reverse('payment-error'))

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

Краткий ответ: вы не можете.Это не то, для чего предназначены сигналы.Вам нужно будет ввести проверочный код в вашу форму и обработать ответы в вашем представлении.Это процесс.

0 голосов
/ 23 февраля 2013

Наткнулся на этот вопрос через поиск в Google и нашел ответ довольно бесполезным / бесполезным. Я думаю, что это действительное любопытство, и хотя Крис Пратт прав, что вы не можете изменить запрос или ответ в сигналах, кажется разумным хотеть запустить некоторый код, основанный на том, что пользователь только что вошел в систему.

Чтобы запускать некоторый код только тогда, когда кто-то входит в систему и содержит перенаправление, вы можете использовать промежуточное представление и настройку LOGIN_REDIRECT_URL в ваших settings.py https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url

в settings.py:

LOGIN_REDIRECT_URL = reverse_lazy('app.views.after_login')

в app / views.py:

@login_required
def after_login(request):
    if conditions met:
        return HttpResponseRedirect(reverse('home_alt'))
    else:
        return HttpResponseRedirect(reverse('home'))
...