Как создать объект запроса в Django с сессией и cookies аутентифицированного пользователя?
В представлении Django я могу использовать cookies из входящего запроса и передать их в другой запрос в качестве средства аутентификации и делать запросы к другим представлениям в проекте, используя модуль requests
.
def someview(request):
cookies = request.COOKIES
csrftoken = cookies['csrftoken']
baseurl = settings.BASEURL
url = f"{baseurl}/api/csvuploads/"
payload = {...}
resp = requests.post(
url,
data=payload,
cookies=cookies,
headers={'X-CSRFToken': csrftoken},
)
Мне нужно, чтобы команда управления выполнялась периодически (как cronjob), чтобы иметь аналогичную логику, проблема в том, что команда управления будет выполняться в контейнере в Kuberentes, поэтому мне нужно создать пользователя, запрос, аутентификацию и вход, чтобы я мог делать больше запросов.
Как я могу воссоздать тот же запрос с сессией, куками и всем остальным, если запрос исходит не от представления?
Моя первая попытка была использовать RequestFactory
из тестового фреймворка, но я не смог понять, как создать запрос с сессией и cookies из аутентификации.
def handle(self, *args, **options):
factory = RequestFactory()
request = factory.post(
"/admin/login",
{'username': username, 'password': password}
)
user = authenticate(request, username=username, password=password)
request.user = user
Я знаю, что могу сделать это с помощью теста Client()
, но будет ли хорошей практикой использовать инструмент тестирования для выполнения запросов в сценарии, подобном производственному?