У меня проблема с передачей сеанса с одной из моих страниц фляги на другую.
Начиная с auth.py У меня есть следующий код:
@bp.route('/login', methods=('GET','POST'))
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
soap_client = SOAPClient()
error = None
try:
client_session = soap_client.client.service.login(username, password, 3600)
except zeep.exceptions.Fault as login_error:
error = str(login_error)
if error is None:
session.clear()
session['user_name'] = username
session['client_session'] = client_session
return redirect(url_for('index'))
flash(error)
return render_template('auth/login.html')
Который, насколько я понимаю, должен хранить информацию о том, что пользователь вошел в переменную session ['client_session'].
Далее я хотел бы напечатать некоторые данные пользователю, если он вошел в систему, поэтому я написалчто-то вроде этого в index.py :
@bp.route('/', methods=('GET','POST'))
def index():
if session:
soap_client = SOAPClient()
reseller_details = soap_client.client.service.getClients([])
return render_template('index.html', reseller_details=reseller_details)
Теперь не имеет значения, что я передаю пустой список в качестве параметров, который работает для этого метода.Вместо этих данных я получаю zeep.exceptions.Fault ошибку, которая говорит:
zeep.exceptions.Fault: Требуется авторизация!
Мой SOAPClient реализован следующим образом:
class SOAPClient:
def __init__(self):
session = Session()
session.verify = False
transport = Transport(session=session)
settings = Settings(strict=True, xml_huge_tree=True)
self.client = Client(MY_SERVER_ADDRESS, settings = settings,
transport = transport )
В области действия / login все работает нормально, поэтому я предполагаю, что это как-то связано с передачей переменной soap_client или client_session вокруг приложения фляги.Передача soap_client вызывает ошибку TypeError, хотя:
TypeError: <flaskr.SOAPClient.SOAPClient object at 0x7f8bef5be828> is not JSON serializable
Может кто-нибудь указать мне, что мне здесь не хватает?
Заранее большое спасибо.