Я использую этот сценарий для доступа к моему серверу Django и получения токена CSRF, который затем просто пытается отправить данные POST в представление:
#!/usr/bin/env python2.7
import sys, time
import requests
username = 'root'
password = 'pass'
fileName, userFolder, uploadFolder = sys.argv
URL = 'http://127.0.0.1:8000/admin/login/'
client = requests.session()
# Retrieve the CSRF token first
client.get(URL) # sets cookie
if 'csrftoken' in client.cookies:
csrftoken = client.cookies['csrftoken']
login_data = dict(username=username, password=password, csrfmiddlewaretoken=csrftoken, next='')
r = client.post(URL, data=login_data, headers=dict(Referer=URL))
Но в журнале доступа моего сервера разработки Django я вижу:
[03/Dec/2018 17:44:17] "GET /admin/login/ HTTP/1.1" 200 1637
[03/Dec/2018 17:44:17] "POST /admin/login/ HTTP/1.1" 302 0
Not Found: /accounts/profile/
[03/Dec/2018 17:44:17] "GET /accounts/profile/ HTTP/1.1" 404 9904
Чего я не понимаю, так это почему я продолжаю получать дополнительные Get и 404?
Можно ли настроить мой запрос Python на игнорирование любого вида сигнала перенаправления независимо от того, является ли он дляGET или POST или session.get()
?
Я пытался добавить allow_redirects=False
к client.get(URL, allow_redirects=False)
, но это не помогло.
Мои POST работают нормально, я просто пытаюсь устранитьдополнительный запрос GET и ненужный беспорядок / накладные расходы.
Спасибо.