Ho scritto un'applicazione web in Django. Ho bisogno di postare alcuni dati in un modulo da uno script python. Il post (r2) funziona correttamente quando l'accesso è disabilitato. Ho la richiesta che funziona correttamente per il login (r1), ma ora mi dà un errore 404 per il modulo post (r2). Il login non sembra essere trasferito alla seconda richiesta. Csrftoken e sessionid sono hardcoded per il test perché non li riconosce. relativo codice (base URL rimossa):Accesso alla pagina Web dallo script utilizzando Requests e 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)
dovrebbe r2 essere fatto da 'Client' invece di' requests'? –
Non riconosce 'csrftoken' quando lo cambio in 'client.post'. Entrambi i comandi funzionano separatamente, ma non insieme. –
Bene, non puoi aspettarti che i tuoi cookie dalla prima richiesta vengano inviati con la seconda richiesta se non usi la tua sessione. –