来自其他文件的烧瓶路由器

kde*_*713 4 python routes attributeerror flask

我现在正在构建 Flask 应用程序,如下所示。

myserver
- server.py
- myapp
-- urls.py
-- models.py
-- views.py
-- consts.py
Run Code Online (Sandbox Code Playgroud)

我的代码在这里。

服务器.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

# Flask App
application = Flask(__name__)

# SQLAlchemy
application.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:./local.db"
db = SQLAlchemy(application)

if __name__ == "__main__":
    application.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

网址.py

from server import application
from . import views

@application.route('/')
def version():
    return views.version()
Run Code Online (Sandbox Code Playgroud)

但是当我运行 server.py 并打开http://localhost:5000/服务器时说404 Not Found

所以我在stackoverflow上搜索,我找到了一些关于Blueprint. 我制作了名为 app 的蓝图app = Blueprint('app', __name__),并从 server.py 注册它但我得到了AttributeError: module 'urls' has no attribute 'app'.

如何在其他文件中定义 url 路由器?

Dan*_*har 11

这里以Blueprint. 文件结构:

/project_folder
   server.py
   urls.py
   urls2.py
Run Code Online (Sandbox Code Playgroud)

服务器.py:

from flask import Flask
from urls import urls_blueprint
from urls2 import urls2_blueprint


app = Flask(__name__)
# register routes from urls
app.register_blueprint(urls_blueprint)
# we can register routes with specific prefix
app.register_blueprint(urls2_blueprint, url_prefix='/urls2')

if __name__ == "__main__":
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

网址.py:

from flask import Blueprint

urls_blueprint = Blueprint('urls', __name__,)


@urls_blueprint.route('/')
def index():
    return 'urls index route'
Run Code Online (Sandbox Code Playgroud)

urls2.py:

from flask import Blueprint
urls2_blueprint = Blueprint('urls2', __name__,)


@urls2_blueprint.route('/')
def index():
    return 'urls2 index route'
Run Code Online (Sandbox Code Playgroud)

运行服务器并打开http://localhost:5000/http://localhost:5000/urls2/

希望这可以帮助。