Я работаю над большим приложением Django, подавляющее большинство которого требует входа в систему для доступа. Это означает, что во всем нашем приложении мы посыпались:
@login_required
def view(...):
Это прекрасно, и он отлично работает, пока мы не забываем добавлять его повсюду! К сожалению, иногда мы забываем, и неудача часто не очень очевидна. Если единственная ссылка на представление находится на странице @login_required, вы вряд ли заметите, что можете реально достичь этого вида без входа в систему. Но плохие парни могут заметить, что является проблемой.
Моя идея состояла в том, чтобы повернуть вспять систему. Вместо того, чтобы набирать @login_required везде, вместо этого у меня было бы что-то вроде:
@public
def public_view(...):
Просто для публики. Я попытался реализовать это с помощью некоторого промежуточного ПО, и я не мог заставить его работать. Я думаю, все, что я пробовал, плохо взаимодействует с другим промежуточным программным обеспечением, которое мы используем. Затем я попытался написать что-то, чтобы пересечь шаблоны URL, чтобы проверить, что все, что не @public было отмечено @login_required, - по крайней мере, мы бы быстро поняли ошибку, если мы что-то забыли. Но тогда я не мог понять, как сказать, было ли применено @login_required к представлению...
Итак, каков правильный способ сделать это? Спасибо за помощь!