0
我從我的android應用程序發送HTTP請求到我的燒瓶服務器。最初,我在燒瓶服務器會話創建我的移動客戶端的會話入門[「mobile_username」]在我家「http://0.0.0.0:2800/」 URL所以當它的用戶日誌將被更新,以他的名字=無。但問題是,當我把我的登錄功能,第二個請求,我檢查會話[「mobile_username」]是否返回鍵錯誤名爲「mobile_username」沒有這樣的關鍵。我知道會話不同步,但我需要知道一個解決方案如何處理我的移動應用程序和我的燒瓶服務器之間的會話。任何幫助都會很棒。燒瓶和安卓會議
我的代碼:
import datetime
from flask import Flask, render_template, request, jsonify, flash, session, redirect, url_for
from flask import Session
from his.Models import db, GuestDetails, BookingDetails, RoomPriceDetails, RoomDetails, DiscountDetails
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///HIS.sqlite"
@app.route('/', methods=['POST', 'GET'])
def home():
if request.method == 'POST':
if request.form['device'] == 'Mobile':
try:
if session['mobile_username'] is not None:
return jsonify({'message': 'dashboard'})
elif session['mobile_username'] is None:
return jsonify({'message': "Please login or sign up"})
except KeyError:
session['mobile_username'] = None
print(session['mobile_username'])
return jsonify({'message': 'home'})
else:
try:
if session['username'] is not None:
return redirect(url_for('dashboard'))
elif session['username'] is None:
return render_template('home.html', message="Please login or sign up")
except KeyError:
session['username'] = None
return render_template('home.html')
return render_template('home.html')
@app.route('/login', methods=['POST', 'GET'])
def login():
if request.method == 'POST':
if request.form['device'] != 'Mobile':
if session['username'] is None:
guest_id = request.form['id']
print(guest_id)
password = request.form['password']
records = db.session.query(GuestDetails).all()
IDs = [records[i].Guest_ID for i in range(len(records))]
if guest_id in IDs:
d_password = db.session.query(GuestDetails).filter_by(Guest_ID=guest_id).first()
if password == d_password.Password:
session['username'] = d_password.First_name+" "+d_password.Last_name
session['user_id'] = d_password.Guest_ID
return redirect(url_for('dashboard'))
else:
return render_template('login.html', message="Password is incorrect")
else:
return render_template('login.html', message="User id does not exist. Please sign up..")
else:
return redirect(url_for('dashboard'))
else:
if request.method == "POST":
if session['mobile_username'] is None:
print(session['mobile_username'])
guest_id = request.form['id']
password = request.form['password']
records = db.session.query(GuestDetails).all()
IDs = [records[i].Guest_ID for i in range(len(records))]
if guest_id in IDs:
d_password = db.session.query(GuestDetails).filter_by(Guest_ID=guest_id).first()
if password == d_password.Password:
session['mobile_username'] = d_password.First_name + " " + d_password.Last_name
session['mobile_user_id'] = d_password.Guest_ID
return jsonify({'message': 'Successfully logged in', 'name': session['mobile_username']})
else:
return jsonify({'message': 'Password is incorrect'})
else:
return jsonify({'message': "User id does not exist. Please sign up.."})
else:
return jsonify({'message': "dashboard"})
else:
return render_template('login.html')
if __name__ == '__main__':
app.secret_key = 'super secret key'
app.config['SESSION_TYPE'] = 'redis'
db.init_app(app)
with app.app_context():
db.create_all()
app.run(host="0.0.0.0", port=2800, debug=True, threaded=True)
我在Android應用測試它在我的第一次請求創建一個會話[「mobile_username」],而在我的第二個請求時,它顯示了一個KeyError異常(「mobile_username」鍵不堅持),並在我的瀏覽精細同一作品。所以我不知道我哪裏錯了。 – Gautham
如果它從瀏覽器的工作你試圖消除'如果的request.form [「設備」] ==「移動」:'檢查?我建議你儘量簡化問題並逐步開展工作。你確定Android的請求是正確的,併發送你所期望的? – Kai