pylint的是在我大喊大叫把一个from .views import *
在结束我的__init__.py
说法进口应放置在模块的顶部。
如果我把它放在顶部,__init__.py
那么 Flask 就找不到我的路线(视图),所以这不起作用。页面无法加载,404 错误。最后导入路由时加载良好。
几个问题:
供参考,以防万一:
.
??? README.md
??? my_app
? ??? __init__.py
? ??? forms.py
? ??? models.py
? ??? static
? ??? templates
? ? ??? index.html
? ? ??? loggedin.html
? ??? views.py
??? config.py
??? instance
? ??? config.py
??? requirements.txt
??? run.py
Run Code Online (Sandbox Code Playgroud)
内容示例 __init__.py
from flask import Flask, render_template
from authlib.integrations.flask_client import OAuth
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
app.config.from_pyfile('config.py')
oauth = OAuth(app)
APP_CALLBACK_URL = app.config['APP_CALLBACK_URL']
APP_CLIENT_ID = app.config['APP_CLIENT_ID']
APP_CLIENT_SECRET = app.config['APP_CLIENT_SECRET']
APP_DOMAIN = app.config['APP_DOMAIN']
APP_BASE_URL = 'https://' + APP_DOMAIN
my_app = oauth.register(
'MY_APP',
client_id=APP_CLIENT_ID,
client_secret=APP_CLIENT_SECRET,
api_base_url=APP_BASE_URL,
access_token_url=APP_BASE_URL + '/oauth/token',
authorize_url=APP_BASE_URL + '/authorize',
)
from .views import *
Run Code Online (Sandbox Code Playgroud)
一般来说,导入应该排在最前面,但 Flask 文档谈到了这种情况,并鼓励你照你做的去做。摘自https://flask.palletsprojects.com/en/1.1.x/patterns/packages/:
Flask 应用程序对象创建必须在
__init__.py
文件中。这样每个模块都可以安全地导入它,并且__name__
变量将解析为正确的包。所有视图函数(
route()
顶部带有装饰器的函数)都必须导入到__init__.py
文件中。不是对象本身,而是它所在的模块。在创建应用程序对象后导入视图模块。
顺便说一句,不要这样做from .views import *
。做import .views
代替。