Мне интересно, считается ли нормальным (в частности, в Django) иметь URL-адрес, предназначенный только для действий с побочными эффектами, предназначенный только для доступа через POST, и который в основном невидим для пользователя. Допустим, для того, чтобы сделать это конкретным, у меня есть небольшая система обмена сообщениями на моем сайте, и из своей папки входящих сообщений пользователь должен иметь возможность делать кучу вещей, таких как:
- Удалить сообщение
- Отметить сообщение как прочитанное
- Сообщить о спаме
Все эти вещи вызывают обновление страницы, но возвращаются на ту же страницу. Мне интересно, как разработать мои URL-адреса и просмотры вокруг этого. Я вижу (по крайней мере) два варианта и понятия не имею, что является более идиоматическим.
Вариант 1)
Имейте отдельный URL и просмотрите каждое действие. Таким образом, / inbox / delete-message / отображается на views.delete_message и так далее. В конце каждого из этих представлений он перенаправляет обратно в /inbox/.
Мне нравится, как эта опция четко отделена. Если пользователь каким-то образом обнаруживает, что отправляет GET-запрос в / inbox / delete-message /, это создает странную ситуацию (выдает ли я страницу с ошибкой? Молча перенаправляет их?).
Вариант 2)
Используйте один и тот же URL-адрес и представление для каждого действия и используйте параметр POST, который определяет действие. Таким образом, у меня было бы одно довольно длинное представление входящих сообщений, в котором было бы множество операторов if, проверяющих, является ли request.POST ['action'] == 'delete' или request.POST ['delete'] == 'true' или любым другим .
Этот вариант мне кажется менее понятным, но я также чувствую, что он более распространен.
Что предпочтут Джангонауты? Или есть другой вариант, который лучше, чем любой из вышеперечисленных?