python - 关于使用 Flask 进行动态路由的问题
问题描述
我正在尝试在我的 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'))
解决方案
伙计们刚刚找到了一种方法来做我正在寻找的事情(不知道这是否是最好的但有效)。在我找到的解决方案下方:
@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>
推荐阅读
- tableau-api - 需要 Tableau 详细级别修复
- html - 如何扩展 React 组件以使用 flexbox 填充页面
- java - 如何在运行时通过网络执行 java 程序/文件发送
- search - 搜索 Solr 上的所有字段
- c - 如何修复双向链表代码的“无效读取大小 8”valgrind 错误?
- haskell - How to plug this type hole 2
- c# - IIS 工作进程显示其中一个应用程序池的队列
- python - python ctypes malloc 返回一个 Int 而不是 void*
- javascript - How can i use DOM events inside my javascript classes?
- git - git注释标签可以修改吗?如果是这样,怎么做?