如果python请求中不存在,则创建一个会话

时间:2014-03-17 18:08:04

标签: python session

您好我能够使用python请求登录。

ses = requests.session()
datas = {'username':'admin','password':'abc'}
req = ses.post('http://example.com/login/', data=datas)

但是,我现在需要建立会话或仅在未登录时才需要登录。我尝试使用:

if not ses:
    ses = requests.session()
    datas = {'username':'admin','password':'abc'}
    req = ses.post('http://example.com/login/', data=datas)

但它没有奏效。任何帮助表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:0)

确切的代码不起作用,因为ses在定义之前使用。相反,尝试:

ses = None

def get_ses():
    global ses
    if ses is not None:
        ses = requests.session()
    return ses

ses = get_ses()
datas = {'username':'admin','password':'abc'}
req = ses.post('http://example.com/login/', data=datas)

这不是很好,因为它使用全局变量。保留函数之间的使用状态正是对象的用途,因此它应该是一个类:

class SessionFactory(object):

    def __init__(self):
        self.ses = None

    def get(self):
        if self.ses is None:
            self.ses = requests.session()
            return self.ses

 sf = SessionFactory()
 ses = sf.get()
 datas = {'username':'admin','password':'abc'}
 req = ses.post('http://example.com/login/', data=datas)

答案 1 :(得分:0)

您可以通过以下方式查看会话:

def login_website(username, password):
    session.post(LOGIN_URL, data=form, params=params)
    return session_or_None

session = login_website(username, password)

if session is None:
    print("No Session Found.")
else:
    print("Session Found!")