我想创建一个外部python客户端来访问一个Django应用程序。客户端应该对用户进行身份验证,生成cookie并能够像访问任何浏览器一样访问页面。Python身份验证Cookie和Django会话
login_data_encoded = urllib.urlencode({'user':'sample', 'pass':'secret'})
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
opener.open('http://localhost:8000/login', login_data_encoded) #problem here
response = opener.open('http://localhost:8000/secret_page')
secret_page = response.read()
在Python解释:
import client
client.secret_page
--> []
但页面是空的。我可以在浏览器中查看页面(一旦以示例用户身份登录,登录工作)。由于我没有为用户启动django会话,Django将我标识为匿名用户(因为权限,它不允许我查看示例用户的数据)。如何通过客户端启动django会话? (不带浏览器)
我希望我已经说清楚了。
编辑1:
它记录了我在为匿名用户,有或没有斜杠没有差别。代码或模板中没有csrf。 Django的日志显示200响应,并且200获得secret_page。 cj包含cookie信息:
<cookielib.CookieJar[Cookie(version=0, name='app_r12', value='dd070f7acfe37c0474c223287c5adcbe', port=None, port_specified=False, domain='localhost.local', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False)]>
opener.open(POST 1)的响应是200和url是相同的。
对不起web.text不起作用:'响应'对象没有属性'文本'。我如何查看页面? – Neeran 2012-03-27 11:44:55
找出它的网页。内容,但它只是把我带到登录页面,而不是秘密页面 – Neeran 2012-03-27 12:01:21
你确定你传递了正确的凭据吗? – 2012-03-27 12:20:35