关于这个另外的问题,我尝试使用urlencode和urlopen将数据发布到表单.但是,当我使用它时,Django 1.2给了我一个CSRF验证失败错误.有解决方法吗?
谢谢.
将数据提交给其他表单和您的案例之间的区别在于您必须首先获得CSRF令牌.这可以通过首先在页面上执行GET请求然后csrfmiddlewaretoken
使用合适的解析器解析来完成.
另外请记住,您需要安装一个cookie jar才能使其工作.
例如:
#!/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()