Python 通过urllib2登录/admin

Python 通过urllib2登录/admin,python,django,login,urllib,Python,Django,Login,Urllib,我尝试使用以下代码登录到django管理页面 #!/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_admin =

我尝试使用以下代码登录到django管理页面

#!/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_admin = 'http://localhost:8000/admin/'
url = urllib2.urlopen(url_admin)
html = url.read()
doc = BeautifulSoup(html)

csrf_input = doc.find(attrs=dict(name='csrfmiddlewaretoken'))
csrf_token = csrf_input['value']

params = urllib.urlencode(dict(username='my_admin_user',
                               password='my_password',
                               csrfmiddlewaretoken=csrf_token))

url = urllib2.urlopen(url_admin, params)
print url.read()
但我得到了以下错误(在打印的html中)

请重新登录,因为您的会话已过期。


我做错了什么?我的目标是保持一个登录会话,然后执行一些任务。事实上,用户应该在这里是一个管理员不是我的要求。只是我还没有一个非管理员用户的常规登录页面。

我遇到了一个类似的问题,服务器在每次请求时都向我发送一个新的会话cookie,而我无法用CookieJar解决这个问题


我最终使用了SeleniumPhantomJSWebDriver。如果你得不到任何有效的解决方案,那就试试吧,这是我的经验。

尝试我的方式确实不太聪明。起初,我设置了一个可能有些过分,但现在对我帮助很大的东西:django restfull框架。我想你的回答也不错。
<p class="errornote">
    Please log in again, because your session has expired.
</p>