【问题标题】:can't running flask authentification无法运行烧瓶身份验证
【发布时间】:2021-09-06 19:48:41
【问题描述】:

我尝试使用 python、SQLAlchemy 和 Flask 实现一个身份验证应用程序。我找到了https://www.digitalocean.com/community/tutorials/how-to-add-authentication-to-your-app-with-flask-login-fr。 但是在我定义了set FLASK_APP=projectset FLASK_DEBUG=1 之后,我尝试使用flask run 运行我的应用程序,我得到了错误:

Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not 
found in the current directory.

app.py:

from flask import Blueprint

main = Blueprint('main', __name__)

@main.route('/')
def index():
    return 'Index'

@main.route('/profile')
def profile():
    return 'Profile' 

auth.py:

from flask import Blueprint
#from . import db

auth = Blueprint('auth', __name__)

@auth.route('/login')
def login():
    return 'Login'

@auth.route('/signup')
def signup():
    return 'Signup'

@auth.route('/logout')
def logout():
    return 'Logout'

初始化.py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

# init SQLAlchemy so we can use it later in our models
db = SQLAlchemy()

def create_app():
    app = Flask(__name__)

    app.config['SECRET_KEY'] = 'secret-key-goes-here'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'

    db.init_app(app)

    # blueprint for auth routes in our app
    from auth import auth as auth_blueprint
    app.register_blueprint(auth_blueprint)

    # blueprint for non-auth parts of app
    from app import main as main_blueprint
    app.register_blueprint(main_blueprint)

    return app

我完全遵循 tuto 并且我使用 venv 你有什么想法吗?

【问题讨论】:

    标签: python flask sqlalchemy python-venv


    【解决方案1】:

    您可以按照以下步骤进行安装(Linux):

    创建一个新文件夹并进入你的文件夹路径:

    $ mkdir myproject 
    $ cd myproject
    

    安装虚拟环境并创建一个名为 venv 的新虚拟环境:

    $ pip install virtualenv
    $ virtualenv venv
    

    激活你的venv:

    $ source venv/bin/activate
    

    现在安装 Flask!

    $ pip install Flask
    

    如果你完成了,在你的目录中创建一个名为 proj.py 的新 python 文件: 项目.py

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello_world():
        return "<p>Hello, World!</p>"
    

    如果你使用 pycharm 之类的编辑器,打开编辑器的终端或本地终端并在下面编写代码:

    $ export FLASK_APP=proj
    $ export FLASK_ENV=development
    $ flask run
    

    $ flask run --host=0.0.0.0
    

    在调试模式下,您可以编写如下代码:

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello_world():
        return "<p>Hello, World!</p>"
    
    if __name__ == '__main__':
       app.run(host='0.0.0.0',port=8000,debug=True)
    

    然后运行:

    python proj.py
    

    【讨论】:

    • 在 digitalocean 中,他们不像我以前那样使用 "if name == 'main': [...]"看到一些关于“烧瓶运行”的东西,我尝试了一个最小的应用程序,它正在工作。我认为来自蓝图非常感谢您的回答! ^^
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2021-11-01
    • 2021-03-24
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多