python - Flask - url_for() 即使在 request.get 修复后也缺少参数
问题描述
我目前正在使用 Flask,并且一直遇到此错误:
“profile_creation:缺少 1 个必需的位置参数:'user'”
因此,我查看了该站点上的一些帖子,大多数答案都涉及添加request.args.get()
. 所以,我对帖子做了我能做的,并对我的代码进行了编辑,但我仍然收到错误消息。这就是我现在所拥有的:
@app.route("/profile-creation", methods = ['GET', 'POST'])
def profile_creation(user):
user = request.args.get("x")
form = ProfileForm()
if form.validate_on_submit():
...
return redirect(url_for('/home'))
@app.route("/register", methods = ['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
user = User(username = form.username.data, first_name = form.first_name.data, last_name = form.last_name.data,
email = form.email.data, password = hashed_password)
return redirect(url_for('profile_creation', x = user))
这两个页面都与用户填写带有个人信息的表单有关(注册帐户,然后发布一些个人资料,例如年龄等)。我在哪里错了?任何帮助将不胜感激。谢谢你。
解决方案
如果您user
在表单中的 URL 中/profile-creation?user=my_user
,则使用
@app.route("/profile-creation", methods = ['GET', 'POST'])
def profile_creation(): # Note: no user argument here
user = request.args.get("my_user")
如果相反,它就像/profile-creation/my_user
@app.route("/profile-creation/<user>", methods = ['GET', 'POST'])
def profile_creation(user):
# user argument will be set to 'my_user'
推荐阅读
- sql - 在水晶报表中抑制字段的条件
- qt - 如何使用 v3 rest api 从谷歌驱动器下载文件?
- eclipse-che - 如何向 eclipse che 添加新的语言支持
- angular - 对 Observable zip 订阅执行操作
- python-3.x - 如何获取与给定正则表达式匹配的所有 xpath?
- string - Python 3:保留没有 b' 的字符串
- docusignapi - DocuSign- 使用 DocuSignAPI 以电子方式盖章(盖章)PDF 文档
- apache-zookeeper - 如何使用 zkCli 从 ZooKeeper 访问受保护的 znode?
- c++ - 使用 VC141 将 high_resolution_clock::time_point 转换为 time_t
- python - 覆盖方法删除从基类继承的装饰器