当前位置:  开发笔记 > 编程语言 > 正文

如何使用urllib发布到Django 1.2表单?

如何解决《如何使用urllib发布到Django1.2表单?》经验,为你挑选了1个好方法。

关于这个另外的问题,我尝试使用urlencode和urlopen将数据发布到表单.但是,当我使用它时,Django 1.2给了我一个CSRF验证失败错误.有解决方法吗?

谢谢.



1> Manoj Govind..:

将数据提交给其他表单和您的案例之间的区别在于您必须首先获得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()

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有