You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask生成含随机数URL无法访问问题求助

问题描述

尝试在Flask中创建包含随机数的URL,使用random.randint(1,10)或random.randrange(1,10)生成路由路径时,访问对应URL会出现「Not Found」错误,但手动给变量赋值(如vartest=7)却能正常访问。

无法正常运行的代码

vartest=random.randint(1,10)

urlsting="/"+str(vartest)

print("urlsting is .......",urlsting)

@app.route(urlsting)
def homeFun():
    return " Congrats!! :-) "

浏览器错误提示

Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

可正常运行的代码

vartest=7

urlsting="/"+str(vartest)

print("urlsting is .......",urlsting)

@app.route(urlsting)
def homeFun():
    return " Congrats!! :-) "

完整代码

from flask import Flask
import random
app= Flask(__name__)


#Doesn't work 
vartest=random.randint(1,10) # or random.randrange(1,10)
#______
#Works perfectly
#vartest=7


urlsting="/"+str(vartest)
print("urlsting is .......",urlsting)


@app.route(urlsting)
def homeFun():
    return "Congrats!! :-) "


if __name__=="__main__":    
    app.run(host="0.0.0.0", port='8888',debug= True)
解决建议
  • 问题根源:当前写法是在Flask应用启动时一次性生成固定随机路由,这个路由只会是1-10中的某一个值(启动时随机生成的那个),如果访问时输入了其他数字,自然会找不到路由。开启debug模式时,代码热重载还会重新生成随机数,导致路由再次变化。

  • 方案一:支持所有1-10的数字路径(推荐)
    使用Flask的动态路由,匹配1到10之间的整数路径:

    from flask import Flask
    import random
    app = Flask(__name__)
    
    @app.route('/<int:vartest>')
    def homeFun(vartest):
        # 校验路径是否在1-10范围内
        if 1 <= vartest <= 10:
            return "Congrats!! :-) "
        else:
            return "无效路径", 404
    
    if __name__ == "__main__":    
        app.run(host="0.0.0.0", port='8888', debug=True)
    

    这样访问/1到/10的任意路径都能正常返回,超出范围则返回404错误。

  • 方案二:固定启动时的随机路由
    如果确实需要每次启动只生成一个随机路由,必须以控制台打印的路径为准访问:

    from flask import Flask
    import random
    app = Flask(__name__)
    
    vartest = random.randint(1,10)
    urlstring = "/" + str(vartest)
    print("可用路由:", urlstring)
    
    @app.route(urlstring)
    def homeFun():
        return "Congrats!! :-) "
    
    if __name__ == "__main__":    
        app.run(host="0.0.0.0", port='8888', debug=True)
    

    注意:每次重启应用,路由都会随机变化,用户无法提前预知路径,仅适用于特殊场景。

内容的提问来源于stack exchange,提问作者Liampour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 07:40:15