我想創建一個外部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