Flask 动态路由采用我未指定的值

Flask dynamic route is taking values which I have not specified

问题

我在 Flask app.py 文件中创建了一个动态路由 /update/<randomString>,其中 randomString 是随机生成的字符串,长度为 50。但是,如果我搜索 /update/1,我可以毫无错误地查看相同的动态路由 /update/<randomString>!谁能解释为什么会这样?

看看我到目前为止尝试了什么:

@app.route('/')
def index():
 randomString = ''.join(secrets.choice(string.ascii_uppercase+string.digits+string.ascii_lowercase) for k in range (50))
 session['randomString'] = str(randomString)
 return render_template('index.html')

@app.route('/update/<randomString>')
def update(randomString):
 if 'randomString' in session:
  randomString = session['randomString']
  return render_template('update.html')
 else:
  return 'error...'

Link的动态页面在update.html页,其中随机字符串是在session的帮助下传递的(定义在index.html页)。

<a href="update/{{randomString}}">Dynamic page</a>

编辑:当我点击上面定义的 link 并且我的 URL 部分显示那个长的 randomString 时,我也能够查看动态路由。问题是:当我搜索 http://127.0.0.1:5000/update/1

时,我可以访问相同的路线

截图一

截图二

在存储随机字符串时,您使用的密钥是randomString。所以你将随机字符串存储在像

这样的字典中
session['randomString'] = '1234567890'

然后,当您在 /update 路由中访问会话时,您只是在检查会话是否具有名为 randomString 的密钥。您还应该检查 session['randomString'] == '1234567890' 并仅在会话中的随机字符串与您在 / 路径中创建的字符串相同时才呈现页面。您可以将 if 替换为

if 'randomString' in session and session['randomString'] == randomString :