Flask 找不到注册的URL

Flask 找不到注册的URL,flask,Flask,我们已经用Flask实现了一个二合一的后端。对于网站本身(我们称之为tekid),我们没有遇到任何问题。但是对于管理门户(我们称之为tekid admin),即使使用相同的视图注册表,WSGI服务器(dev和prod)也会为所有请求返回404 NOT FOUND 相关代码 CLI条目注册为 tekid->tekid.cli.www:cli tekid admin->tekid.cli.adm:cli 以下是用于保存Flask应用程序对象的代码: #-*-编码:utf-8-*- “”“TekI

我们已经用Flask实现了一个二合一的后端。对于网站本身(我们称之为
tekid
),我们没有遇到任何问题。但是对于管理门户(我们称之为
tekid admin
),即使使用相同的视图注册表,WSGI服务器(dev和prod)也会为所有请求返回404 NOT FOUND

相关代码 CLI条目注册为

  • tekid
    ->
    tekid.cli.www:cli
  • tekid admin
    ->
    tekid.cli.adm:cli
以下是用于保存Flask应用程序对象的代码:

#-*-编码:utf-8-*-
“”“TekID网站的模块入口点。”“”
#在'tekid/app/www.py'中为'tekid'输入`
来自tekid.url.www导入应用程序
#在'tekid/app/adm.py'中为'tekid admin'`
从tekid.url.adm导入应用程序
以下是我们用于CLI输入的代码:

#-*-编码:utf-8-*-
“”“用于TekID网站的CLI。”“”
导入点击
进口烧瓶
将tekid.core.typing导入为typing
#在'tekid/cli/www.py'中为'tekid'输入`
来自tekid.app.www导入应用程序
#在'tekid/cli/adm.py'中为'tekid admin'`
从tekid.app.adm导入应用程序
__全部u u=['cli']
@单击.group(cls=flask.cli.FlaskGroup,create_app=lambda:app)
def cli()->typing.NoneType:
“”“TekID网站的管理脚本。”“”
以下是我们用于路由注册表的代码(我们正在使用Flask本身提出的集中式注册机制):

#tekid/url/www.py&tekid/url/adm.py(测试时相同)
#-*-编码:utf-8-*-
“”“TekID网站的URL路由。”“”
#pylint:disable=错误的导入位置
从tekid.core.macro导入烧瓶作为应用程序
__所有应用程序
###############################################################################
#加载HTML页面
从tekid.url.pages导入*#pylint:disable=未使用的通配符导入
#index.html
app.add_url_规则('/',view_func=load_index)
... # 相同的路由注册表代码
预期行为 NB:
tekid
tekid admin
应提供相同的输出

routes
命令将给出如下结果:

$ tekid routes
# or
$ tekid-admin routes
Endpoint        Methods            Rule
--------------  -----------------  -----------------------------------
load_contact    GET, POST          /contact/
load_expertise  GET                /expertise/
load_index      GET                /
load_news       GET, POST          /news/
...
static          GET                /static/<path:filename>
$curlhttp://127.0.0.1:5000
404找不到
找不到
在服务器上找不到请求的URL。如果您手动输入URL,请检查拼写并重试

环境
  • Python版本:3.7.4
  • 烧瓶版本:1.1.1
  • Werkzeug版本:0.16.0

出于好奇,您是否尝试接受警告的建议并运行
curlhttp://localhost:5000/
?显示相关部分
tekid admin
(例如,设置路线的位置)会有所帮助。@Jamie\u D是的,一切都一样results@DaveW.Smith好的,相关代码已经添加。在你的位置上,我会在
@app.route('/')
的前面放置一个
sys.exit(0)
,以验证在这两种情况下是否都能到达它。然后,在注册路由后,我会再次检查
app
是否没有被第二个实例覆盖。
$ tekid run
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 332-955-135
/fakepath/.venv/lib/python3.7/site-packages/flask/sessions.py:220: UserWarning: The session cookie domain is an IP address. This may not work as intended in some browsers. Add an entry to your hosts file, for example "localhost.localdomain", and use that instead.
  "The session cookie domain is an IP address. This may not work"
127.0.0.1 - - [07/Nov/2019 17:20:03] "GET / HTTP/1.1" 200 -
$ curl http://127.0.0.1:5000
<!--
  _______   _    _____ _____    _     _      _
 |__   __| | |  |_   _|  __ \  | |   | |    | |
    | | ___| | __ | | | |  | | | |   | |_ __| |
    | |/ _ \ |/ / | | | |  | | | |   | __/ _` |
    | |  __/   < _| |_| |__| | | |___| || (_| |_
    |_|\___|_|\_\_____|_____/  |______\__\__,_(_)
-->
... (the actual HTML page)
$ tekid-admin run
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: ***-***-***
/fakepath/.venv/lib/python3.7/site-packages/flask/sessions.py:220: UserWarning: The session cookie domain is an IP address. This may not work as intended in some browsers. Add an entry to your hosts file, for example "localhost.localdomain", and use that instead.
  "The session cookie domain is an IP address. This may not work"
127.0.0.1 - - [07/Nov/2019 17:06:25] "GET / HTTP/1.1" 404 -
$ curl http://127.0.0.1:5000
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>