gpt4 book ai didi

python - 跨蓝图使用 url_for

转载 作者:太空狗 更新时间:2023-10-29 23:59:27 27 4
gpt4 key购买 nike

url_for 是否跨蓝图工作?

/flaskapp
/runserver.py (from server import app; app.run(debug=True))
/server
/__init__.py (app = Flask(__name__))
/pages
/__init__.py ('pages' blueprint)
/users
/__init__.py ('users' blueprint)

server/__init__.py 中:

from server.pages import pages
from server.users import users

app = Flask(__name__)

app.register_blueprint(pages)
app.register_blueprint(users)

server/pages/__init__.py 中:

pages = Blueprint('pages', __name__)

@pages.route('/')
def index(): return '<h1>Index</h1>'

server/users/__init__.py 中:

users = Blueprint('users', __name__)

@users.route('/login')
def login():
...
return redirect(url_for('pages.index'))
^^^^^^^^^^^^^^^^^^^^^^

url_for 调用引发了 BuildError: ('pages.index', {}, None)到达 'pages.index' 的方法是什么?

(我尝试导入模块,但没有成功)

最佳答案

简短回答:是

长(ish)答案:

据我所知,您正在按照应有的方式组织应用。

我已经重新创建了您的设置(尽管是在一个文件中),您可以在此处查看。此代码在我的机器上运行。

https://gist.github.com/enlore/80bf02346d6cabcba5b1

在 flask 中,您可以从拥有的蓝图中使用相对端点 (.login) 访问给定的 View 函数,或者通过绝对端点 (user.login >) 任何地方。

我的钱是你在 View 函数名称中的拼写错误。

正如 Mark Hildreth 在评论中所说,调试问题的一个好方法是查看您的 url 映射。

>>> from app import app
>>> app.url_map
Map([<Rule '/login' (HEAD, OPTIONS, GET) -> user.login>,
<Rule '/' (HEAD, OPTIONS, GET) -> pages.index>,
<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>])
>>>

关于python - 跨蓝图使用 url_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19208488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com