Ich habe eine Webanwendung in Django geschrieben. Ich muss einige Daten in einem Formular aus einem Python-Skript veröffentlichen. Der Post (r2) funktioniert korrekt, wenn die Anmeldung deaktiviert ist. Ich habe die Anfrage korrekt für die Anmeldung (r1), aber es gibt mir einen Fehler 404 jetzt für die Form Post (r2). Die Anmeldung scheint nicht auf die zweite Anfrage übertragen zu werden. Die csrftoken und die sessionid sind zum Testen fest codiert, weil sie sie nicht erkannt haben. Relevante Code (url Base entfernt):Melden Sie sich auf der Webseite von Skript mit Anfragen und Django
url_login='../pecasRunLog/accounts/login/'
url_add_run='../pecasRunLog/model/'+region+'/add_run/'
client = requests.session()
client.get(url_login)
csrftoken = client.cookies['csrftoken']
login_data = {'username':user,'password':password, 'csrfmiddlewaretoken':csrftoken, 'next': '/pecasRunLog/'}
r1=client.post(url_login,data=login_data)
payload={'model_region':region_id,'scendir':scendir, 'mapit_scenario': schema, 'run_name':schema+timestamp, 'run_computer_name':os.environ['COMPUTERNAME'], 'run_computer_ip':get_lan_ip(), 'declared_user':declared_user, 'logged_in_user':getpass.getuser(), 'sd_schema':schema, 'sd_database':database, 'sd_host':get_lan_ip(), 'sd_port':pgport,'mapit_schema':schema, 'mapit_database':database, 'mapit_host':get_lan_ip(), 'mapit_port':pgport,'start_date':start_date, 'start_time':start_time, 'end_date':end_date, 'end_time':end_time,'logged_manually':3, 'csrfmiddlewaretoken':csrftoken, 'sessionid':'jtvv50cs3iyo9bjthbr2diujfmrrlsnf'}
r2=requests.post(url_add_run,payload)
r2 von '' Klient 'statt requests' gemacht werden sollte? –
Es erkennt "csrftoken" nicht, wenn ich es in "client.post" ändere. Beide Befehle arbeiten separat, aber nicht zusammen. –
Nun, Sie können nicht erwarten, dass Ihre Cookies von der ersten Anfrage mit der zweiten Anfrage gesendet werden, wenn Sie Ihre Sitzung nicht verwenden. –