栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Flask-路由(二)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask-路由(二)

python是解释型语言,是边读代码,边运行哪行,所以容易出现循环导入的问题。在java是编译型语言,是先编译,后运行,一般不出出现这个问题。

例如下:

d1_route_variable.py,代码从上往下执行,到了第二行的时候导入urls,进入urls模块,urls模块从上往下执行,到第二行的时候导入app,又回到本模块中,然后继续从上往下执行,到第二行的时候导入urls,这样产生了循环导入。
from flask import Flask, request
from class_05_view import urls


app = Flask(__name__)



if __name__ == '__main__':
    app.run(debug=True)

urls.py
from class_05_view import views
from class_05_view.d1_route_variable import app

app.add_url_rule('/', view_func=views.index)
app.add_url_rule('/cases', view_func=views.cases)
views.py
def index():
    return 'index'
def cases():
    return 'cases'

如何解决这个循环导入,就是在需要的时候再导入,不是把导入都放到最顶部,这样执行顺序就会发生变化,先执行app,再导入到urls,进入urls模块,从上往下执行,到了第二行的时候,导入app,又进入到主函数模块,从上往下执行,到了第5行的时候,拿到app继续往下执行,但是还存在一个问题,导入的模块并不是执行里面的代码,一般的情况下会执行里面的视图函数,但是这个urls里不是函数,所以app.add_url_rule('/', view_func=views.index)
app.add_url_rule('/cases', view_func=views.cases),执行不到,所以导致页面到不到。

from flask import Flask, request



app = Flask(__name__)


from class_05_view import urls


if __name__ == '__main__':
    app.run(debug=True)

继续修改导入文件的方式

from flask import Flask, request



app = Flask(__name__)


from class_05_view.urls import *


if __name__ == '__main__':
    app.run(debug=True)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号