2

问题

/update/<randomString>Flaskapp.py 文件中创建了一个动态路由,其中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...'

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

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

编辑:当我单击上面定义的链接并且我的 URL 部分显示那个长的随机字符串时,我还可以查看动态路由。问题是:当我搜索时,我可以访问相同的路线http://127.0.0.1:5000/update/1

截图一

在此处输入图像描述

截图二

在此处输入图像描述

4

1 回答 1

2

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

session['randomString'] = '1234567890'

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

if 'randomString' in session and session['randomString'] == randomString :
于 2021-09-12T07:36:34.217 回答