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