Вопрос по Dynami c Маршрутизация с Flask - PullRequest
0 голосов
/ 04 мая 2020

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

/user/<userid>/dashboard 
/user/<userid>/profile
/user/<userid>/operations 
/user/<userid>/analytics

Как лучше всего с этим справиться? В приведенном ниже примере я передаю переменную userId после входа в систему в url_for. Как только перенаправление будет исходить из шаблона html, не знаю, как передать userId другим маршрутам.

Я читал что-то о наличии нескольких маршрутов с помощью одного метода, но не мог понять, подходит ли он для того, что мне нужно. Прошу прощения за вопрос новичка и заранее спасибо.

@app.route('/logon', methods=['POST'])
def logon():
    username = request.form['username']
    passwd = request.form['password']
    user = login_verified(username, passwd)
    session['token'] = user['idToken']
    return redirect(url_for('dashboard', usrId=user['userId']))

@app.route('/user/<usrId>/dashboard', methods=['GET'])
def dashboard(usrId):
    if 'token' in session:
        print('User ID = %s' % usrId)
        return render_template('dashboard.html')
    else:
        return redirect(url_for('login'))

1 Ответ

1 голос
/ 05 мая 2020

Ребята только что нашли способ сделать то, что я искал (не знаю, лучший ли он, но работает). Ниже найденное мной решение:

@app.route('/logon', methods=['POST'])
def logon():
    username = request.form['username']
    passwd = request.form['password']
    user = login_verified(username, passwd)
    session['token'] = user['idToken']
    return redirect(url_for('dashboard', usrId=user['userId']))


@app.route('/user/<usrId>/dashboard', methods=['GET'])
def dashboard(usrId):
    if 'token' in session:
        print('User ID = %s' % usrId)
        return render_template('dashboard.html', user=usrId)
    else:
        return redirect(url_for('login'))


@app.route('/user/<usrId>/operations', methods=['GET', 'POST'])
def operations(usrId):
    if 'token' in session:
        return render_template('operations.html', user=usrId)
    else:
        return redirect(url_for('login'))

и шаблон ...

<body>
    <h1>Dashboard</h1>
    <div>
      <a href="{{ url_for('operations', usrId=user) }}">Operações</a>
      <a href="">Perfil</a>
    </div>
    <br />
    <input type="button" value="Logout" onclick="location.href='/logout'" />
  </body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...