2013-05-16 1 views
3

У меня есть форма в плагине, который при отправке мне нужно перенаправить на другую страницу.Как я могу сделать переадресацию из плагина в Django CMS?

Каков наилучший способ для этого?



Так возможные решения:

  1. Используйте App-Hook
  2. Бросить исключение в плагине метод отрисовки, который будет перехвачено класса промежуточного программного обеспечения и сделать перенаправлять оттуда.
  3. Создайте класс промежуточного программного обеспечения и во время процедуры «process_response» проверьте значение объекта запроса, добавленного во время метода рендеринга плагина, затем выполните перенаправление.
+0

Какая форма плагина? – Brandon

+0

Его собственный плагин, который отображает форму. – loki70x7

+0

Итак, вам нужно будет также подключить вашу страницу к представлению, которое обрабатывает POST через CMS App Hook. Тогда вы сможете сделать свою переадресацию. – Brandon

ответ

0

Плагины не подходят для обработки запросов POST, и нет способа повлиять на объект HTTP-ответа из плагина (кроме содержимого этого ответа).

Причина, по которой плагины не имеют возможности обрабатывать запросы POST, состоит в том, что одна страница обычно состоит из нескольких плагинов, и выяснение того, какой плагин должен обрабатывать запрос POST, будет очень сложным. По той же причине они не могут изменить ответ, поскольку два плагина могут попытаться изменить ответ несовместимым образом.

Решение для этого состоит в том, чтобы иметь назначенные конечные точки POST для ваших плагинов (либо статические через urlpatterns, либо через Apphook). Затем эта конечная точка будет перенаправлена ​​на другую страницу или на страницу, на которой находится форма, поэтому плагин отправит с ней некоторые данные. В качестве альтернативы плагин передает форму через AJAX в эту конечную точку и перенаправляет/действует в javascript.