我正在尝试在Flaks应用中创建一个日志区域,每个用户将在其中拥有自己的路由来访问其信息。
/user/<userid>/dashboard
/user/<userid>/profile
/user/<userid>/operations
/user/<userid>/analytics
处理此问题的最佳方法是什么?在下面的示例中,我在url_for内部登录后传递了userId变量。一旦重定向将来自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'))
答案 0 :(得分:1)
伙计们刚刚找到一种方法来做我一直在寻找的东西(不知道这是否是最好的方法,但是可行)。在我找到的解决方案下方:
@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>