Аргумент request в функциях Django?
Как-то слишком много магии...
Неужели вы не понимаете, что request не самозарождается внутри функции, как дети в капусте?! 
1. При старте фреймворка джанга ищет все urls.py, вычитывает из них все urlpatterns.
2. После этого она сохраняет у себя во внутреннем реестре связку урл - функция.
3. Когда приходит запрос, WSGI вычитывает TCP данные, HTTP данные и формирует WSGIRequest объект всунув в него эту информацию и вызывает главный хендлер джанги.
4. Хендлер джанги получив этот объект формирует на его основе свой HttpRequest дополняя его джанговскими фичами. После этого находится соответствие урлу и функция обрабатывающаяя этот урл вызывается, с переданным в нее HttpRequest. И кстати не только request. Надо писать:def handler(request, *args, **kwargs) -> HttpResponse:
    pass
потому что джанга может НЕ ТОЛЬКО REQUEST передать в функцию, будете потом тупить, "а почему у меня user_id пишет что не поместилось".
НЕЛЬЗЯ "№;%% В ВОЗДУХЕ НАПИСАТЬ blabla(request) И ЖДАТЬ ЧТО REQUEST САМОЗАРОДИТСЯ ИЗ НИЧЕГО!!!
И вообще, у меня сильное ощущение, что вам на три-четыре месяца надо отложить Django  и выучить сам питон для начала...
Параметр request подставляет фреймворк, когда вызывает функцию или метод представления.