Flask含JWT的邮箱验证路由无法加载静态文件,求解决
问题根源
问题出在new_token.html模板中静态文件的引用方式是相对路径。当用户访问/confirm_user/<token>这个嵌套路径时,浏览器会把相对路径的静态文件请求解析为/confirm_user/static/xxx,而你的静态文件实际存放在根路径下的/static/目录,因此返回404错误。
解决方案
把模板中所有静态文件的引用改成Flask提供的url_for生成的绝对路径,具体操作如下:
- 打开
new_token.html模板,定位所有静态文件的引用(CSS、JS、图片等)。 - 将原来的相对路径引用替换为
url_for('static', filename='静态文件的相对路径')格式。
示例修改
原错误引用:
<link rel="stylesheet" href="static/vendor/bootstrap/css/bootstrap.min.css"> <script src="static/js/main.js"></script> <img src="static/images/logo.png">
修改后正确引用:
<link rel="stylesheet" href="{{ url_for('static', filename='vendor/bootstrap/css/bootstrap.min.css') }}"> <script src="{{ url_for('static', filename='js/main.js') }}"></script> <img src="{{ url_for('static', filename='images/logo.png') }}">
额外小修正
你的confirm_user视图函数中,return redirect('main.home')写法有误,应该用url_for生成正确的路由地址,避免潜在路径问题:
return redirect(url_for('main.home'))
修改后,无论当前页面处于哪个路由层级,静态文件都会被解析到根路径下的/static/目录,即可正常加载。
内容的提问来源于stack exchange,提问作者Adesua Martins
相关产品推荐
相关产品推荐

