Python 3.x 烧瓶蓝图错误-无法为终结点生成url
我正在设置一个使用蓝图的python/flask应用程序。我目前正在运行“hello world”应用程序的框架,当它工作时,我将对其进行扩展。但我遇到了一个错误“werkzeug.routing.BuildError:无法为端点“index”构建url。您是说“main.index”吗 我的应用程序基于米格尔·格林伯格的“超级教程”,我看不出我的精简代码和他的有什么区别。我已经阅读了一些文档并寻求帮助,但没有什么是合适的。我认为这是一种对专家来说显而易见的错误 下面我列出了我认为相关的代码 应用程序结构是Python 3.x 烧瓶蓝图错误-无法为终结点生成url,python-3.x,flask,Python 3.x,Flask,我正在设置一个使用蓝图的python/flask应用程序。我目前正在运行“hello world”应用程序的框架,当它工作时,我将对其进行扩展。但我遇到了一个错误“werkzeug.routing.BuildError:无法为端点“index”构建url。您是说“main.index”吗 我的应用程序基于米格尔·格林伯格的“超级教程”,我看不出我的精简代码和他的有什么区别。我已经阅读了一些文档并寻求帮助,但没有什么是合适的。我认为这是一种对专家来说显而易见的错误 下面我列出了我认为相关的代码 应
\myapp
myapp.py
\app
__init__.py
\main
__init__.py
routes.py
...
\...
__init__.py
routes.py
...
其中\app
的每个子文件夹都将是一个蓝图
myapp.py
from app import create_app
app = create_app()
html模板扩展了base.html,非常简单
\app\templates\index.html
{% extends "base.html" %}
{% block content %}
<div><h1>{{ msg }}</h1></div>
{% endblock %}
\app\templates\index.html
{%extends“base.html”%}
{%block content%}
{{msg}}
{%endblock%}
这是基地。html
<html>
<head>
{% if title %}
<title>{{ title }} - Metapplica</title>
{% else %}
<title>Welcome to Metapplica</title>
{% endif %}
</head>
<body>
<div>
Meta:
<a href="{{ url_for('index') }}">Home</a>
</div>
<hr>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
</body>
</html>
{%if title%}
{{title}}-Metapplica
{%else%}
欢迎来到Metapplica
{%endif%}
元:
{%with messages=get_flashed_messages()%}
{%if消息%}
{消息%中的消息为%s}
- {{message}}
{%endfor%}
{%endif%}
{%endwith%}
{%block content%}{%endblock%}
当我在浏览器中打开它时,我会
“werkzeug.routing.BuildError:无法为终结点'index'生成url。您是指'main.index'吗?”
这意味着我的名字弄错了还是
完整的错误页面在这里(名称略有不同,因为我稍微简化了代码)
回溯(最近一次呼叫最后一次)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第2328行,在call
返回self.wsgi_应用程序(环境,启动响应)
wsgi_应用程序中的文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第2314行
response=self.handle\u异常(e)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第1760行,在handle\u异常中
重放(exc_类型、exc_值、tb)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\u compat.py”,第36行,在reraise中
增值
wsgi_应用程序中的文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第2311行
response=self.full\u dispatch\u request()
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第1834行,完整发送请求
rv=自身处理用户异常(e)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第1737行,在handle\u user\u异常中
重放(exc_类型、exc_值、tb)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\u compat.py”,第36行,在reraise中
增值
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第1832行,完整发送请求
rv=自我分派请求()
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第1818行,在调度请求中
返回self.view\u函数rule.endpoint
文件“C:\Users\Mark Kortink\Dropbox\Python\projects\metapplica\app\main\routes.py”,索引第16行
返回呈现模板('index.html',title='Home',msg=msg)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\templating.py”,第135行,位于render_模板中
上下文(ctx.app)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\templating.py”,第117行,在渲染中
rv=template.render(上下文)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\jinja2\asyncsupport.py”,第76行,在render中
返回原始渲染(self、*args、**kwargs)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\jinja2\environment.py”,第1008行,在render中
返回self.environment.handle\u异常(exc\u info,True)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\jinja2\environment.py”,第780行,位于句柄\u异常中
重放(exc_类型、exc_值、tb)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\jinja2\u compat.py”,第37行,在reraise中
通过_回溯(tb)提升值
顶级模板代码中的文件“C:\Users\Mark Kortink\Dropbox\Python\projects\metapplica\app\templates\index.html”第1行
{%extends“base.html”%}
顶级模板代码中的文件“C:\Users\Mark Kortink\Dropbox\Python\projects\metapplica\app\templates\base.html”,第12行
家
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\helpers.py”,第356行,位于
返回appctx.app.handle\u url\u build\u错误(错误、端点、值)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\app.py”,第2080行,在handle\u url\u build\u error中
重放(exc_类型、exc_值、tb)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\u compat.py”,第36行,在reraise中
增值
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\flask\helpers.py”,第345行,位于url\u中
力(外部=外部)
文件“c:\users\markko~1\dropbox\python\projects\metapp~1\venv\lib\site packages\werkzeug\routing.py”,第2007行,内部版本
在此框架中打开一个交互式python shell引发BuildError(端点、值、方法、自身)您使用的蓝图的范围是
main
,因此base.html中的url\u for()
需要引用main.index
您使用的蓝图的范围是main
,因此url\u for()
\app\main\routes.py
from app.main import bp
from flask import render_template
@bp.route('/')
@bp.route('/index')
def index():
msg = "Hello World!"
return render_template('index.html', title='Home', msg=msg)
\app\templates\index.html
{% extends "base.html" %}
{% block content %}
<div><h1>{{ msg }}</h1></div>
{% endblock %}
<html>
<head>
{% if title %}
<title>{{ title }} - Metapplica</title>
{% else %}
<title>Welcome to Metapplica</title>
{% endif %}
</head>
<body>
<div>
Meta:
<a href="{{ url_for('index') }}">Home</a>
</div>
<hr>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
</body>
</html>