Der Unterschied zwischen der Übermittlung von Daten an andere Formulare und Ihrem Fall ist, dass Sie zuerst das CSRF-Token erhalten müssen. Dies können Sie tun, indem Sie zuerst eine GET-Anfrage auf der Seite durchführen und dann die csrfmiddlewaretoken
unter Verwendung eines geeigneten Parsers.
Denken Sie auch daran, dass Sie eine Cookie-Dose installieren müssen, damit das funktioniert.
Zum Beispiel:
#!/usr/bin/python
import urllib, urllib2, cookielib
from BeautifulSoup import BeautifulSoup
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
url = urllib2.urlopen('http://localhost:8000/accounts/login/')
html = url.read()
doc = BeautifulSoup(html)
csrf_input = doc.find(attrs = dict(name = 'csrfmiddlewaretoken'))
csrf_token = csrf_input['value']
params = urllib.urlencode(dict(username = 'foo', password='top_secret',
csrfmiddlewaretoken = csrf_token))
url = urllib2.urlopen('http://localhost:8000/accounts/login/', params)
print url.read()