Добавляет ли это использование require_GET decorated ценность?

Я читал эту страницу о том, как добавить favicon на сайт Django. В этой статье представлен следующий код для обслуживания favicon из корня проекта:

@require_GET
@cache_control(max_age=60 * 60 * 24, immutable=True, public=True)  # one day
def favicon(request: HttpRequest) -> HttpResponse:
    if settings.DEBUG:
        name = "favicon-debug.png"
    else:
        name = "favicon.png"
    file = (settings.BASE_DIR / "static" / name).open("rb")
    return FileResponse(file)

Я понимаю, что декоратор @require_GET будет гарантировать, что эта "страница" (или в данном случае просто изображение) может быть открыта только с помощью GET-запроса. Но мне интересно, учитывая, что все, что мы выводим здесь - это просто статическое изображение, есть ли в этом какой-то смысл? Зачем нужен этот декоратор?

Это, конечно, не повредит, но это определенно не обязательно. В вашем случае метод favicon() выполняет только одну функцию и будет выполняться только одним способом. Поэтому декоратор здесь совершенно лишний.

Автор, вероятно, просто поместил его туда, потому что слышал, что это "лучшая практика". Вероятно, они также использовали его для всех своих других представлений.

Вот более полное объяснение на Security Stack Exchange: https://security.stackexchange.com/questions/199776/why-should-someone-block-all-methods-other-than-get-and-post-in-a-restful-applic.

Вернуться на верх