Секция пользователя фляжки

twitsnatch621 спросил: 12 мая 2018 в 03:51 в: python

После аутентификации пользователя у меня возникла проблема с сохранением пользователя во время его перемещения по веб-сайту, который я создал. Я пробовал использовать файлы cookie и сеансы, но я не могу заставить его работать.

Я делюсь своим кодом для входа в систему, где я беру данные для аутентификации пользователя с листа excel, заполненного значком Вверх

Я нахожу имена каждого члена команды, чтобы они отображались на странице команды, на которой пользователь перенаправляется после входа в систему.

@app.route('/login',methods=['POST','GET'])
def login():
# get data from form
try:
    username = str(request.form['username2'])
    password2 = str(request.form['password2'])
    teamname = str(request.form['teamname'])
    print(username)
    print(password2)    # read excel sheet
    data = pd.read_excel("C:\\Users\\290002925\\Documents\\registration.xlsx")    for name in data['Team']:
        if name == teamname:
            team_info = data.loc[data['Team'] == teamname]
            print(team_info)
            team_info['FullName'] = team_info['FirstName'] + [' '] + team_info['LastName']
            teamroster = team_info[['FullName']].copy()
            finalteamroster = pd.DataFrame(teamroster, index=range(5))
            print(finalteamroster)
            print(len(finalteamroster))
            finalteamroster.fillna(value='', inplace=True)
            print(finalteamroster)            amember1 = finalteamroster.at[0,'FullName']
            print(amember1)
            amember2 = finalteamroster.at[1,'FullName']
            print(amember2)
            amember3 = finalteamroster.at[2,'FullName']
            print(amember3)
            amember4 = finalteamroster.at[3,'FullName']
            print(amember4)
            amember5 = finalteamroster.at[4,'FullName']
            print(amember5)

Это где аутентификация пользователя входит в

    for user in data['Email']:
        #check username
        if user == username:
            passw = data.loc[data['Email'] == username]
                # check password
            print(passw)
            test2 = passw.iat[0,3]

Вот как я написал файлы cookie , но я думаю, что Session может быть более полезным

            if test2 == password2:
                    # authenticated
                print("User is authenticated")
                response = render_template('teampage.html', teamname=teamname, member1=amember1, member2=amember2, member3=amember3, member4=amember4, member5=amember5)
                response.set_cookie('userID', username)
                return response            else:
                print("Password is incorrect")
                return render_template('login.html')
        else:
            print("Username is incorrect")
        return render_template('index.html')except:
    print("fail")
return render_template('login.html')

Код для Teampage

@app.route('/teampage')
def teampage():
    userid = request.cookies.get('userID')
    return render_template('teampage.html', userid=userid)

Ссылка на HTML-файл

{{userid}}

1 ответ

bhaskar ответил: 13 мая 2018 в 05:58

Немного сложно понять ваш исходный код, но я понимаю, что вам нужно поддерживать сеанс пользователя -

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
    return render_template('login.html', title=': Login')
if request.method == 'POST':
   if YourMethodToCheckPassword==True:
            session['username'] = request.form['user']
            return redirect(url_for('home'))

И затем использовать объект Session везде,

@app.route('/home')
def home():
    if 'username' in session:
        return render_template("index.html", name=session['username'])

Внутри вашего использования HTML

{{ name }}
twitsnatch621 ответил: 13 мая 2018 в 02:39
Это было очень полезно! Если я пытаюсь сохранить несколько полей данных (имена членов группы), как я могу это сделать? Я попытался сделать что-то длинное в строках сеанса ['userID'] = username session ['amember1'] = amember1 session ['amember2'] = amember2 session ['amember3'] = amember3 session ['amember4'] = amember4 session ['amember5'] = amember5, если "userID", "amember1", "amember2" в сеансе:
bhaskar ответил: 13 мая 2018 в 12:46
Да, это возможно, и есть более простой способ. Но давайте помогаем сообществу, задавая это как отдельный вопрос и отмечая мой ответ как правильный ответ, если вы сочтете его полезным. благодаря