Flask confusion with app

前端 未结 3 1125
眼角桃花
眼角桃花 2020-12-29 19:26

I am starting a flask project, and in my code I have

from flask import Flask, render_template, abort
app = Flask(__name__)

Now

相关标签:
3条回答
  • 2020-12-29 19:57

    The author made his code needlessly confusing by choosing a package name that is the same as Flask's usual application object instance name. This is the one you'll be most interested in:

    app = Flask(__name__)
    

    Here is the documentation on the Flask application object:

    http://flask.pocoo.org/docs/api/#application-object

    To avoid confusion, I recommend using the official Flask documentation instead of that guide.

    0 讨论(0)
  • 2020-12-29 19:58

    That's a bit confusing indeed, due to the poor names choice.

    • app = Flask(__name__): here app is a WSGI application, it implements the corresponding interface and also supports whatever Flask has to offer us on top of that.
    • from app import app : imports exactly that app object from the package app.
    • from app import view: For what heck he's importing views there, is a bit of a mystery, I suppose he wants to make sure that the view bindings are executed. (I'd rather do that in run.py). In any case, that's a kind of importing loop between two modules which is at least confusing as well.
    0 讨论(0)
  • 2020-12-29 20:03

    I think the main confusion is in the line:

    from app import app
    

    You have a python package (a folder with __init__.py file) named "app". From this folder, you are now importing the variable "app" that you defined below in __init__.py file:

    app = Flask(__name__)
    

    Rename the folder from app to say "myproject". Then you will call

    from myproject import app
    

    Also, you will import views as

    from myproject import views
    
    0 讨论(0)
提交回复
热议问题