Python,Flask:在蓝图中导入函数和变量

Python, Flask: Importing functions and variables inside blueprint

如何在app/blueprint/views.py内分别从app/__init__.pyapp/blueprint/__init__.py导入函数和变量?

app/__init__.py

1
2
def main():
    <..>

江户十一〔一〕号

1
2
from flask import Blueprint
blueprint = Blueprint('blueprint', __name__, template_folder='templates')

埃多克斯1〔2〕

1
2
import blueprint
import main


我读了威尔·克罗克斯福德建议的博客,下面是我的问题的解决方案:

应用程序/蓝图/视图.py

1
2
from app import main
from app.blueprint import blueprint


1
2
from app.__init__ import *
from app.blueprint.__init__ import *

应该从两个文件中导入所有函数和变量。

但是,尽管我不认为init文件应该用于此目的。

下面是我使用我的项目的flask蓝图的例子,从udemy教程中学习了结构,我认为这个想法通常是使用init文件将一个python目录制作成一个包,这样您就可以导入其中的内容。您最好使用您想要导入的函数(不太常见的变量)创建新的文件,也许专家会确认,但我认为通常情况下,除非您真正知道自己在做什么,否则您会将python init文件留空。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from flask import Flask, render_template
from Source.common.database import Database

from Source.models.users.views import user_blueprint
from Source.models.street_lists.views import street_list_blueprint
# from Source.models.street_reports.views import street_report_blueprint

__author__ ="Will Croxford, with some base structure elements based on Github: jslvtr, \
from a different tutorial web application for online price scraping"


app = Flask(__name__)
app.config.from_object('Source.config')
app.secret_key ="123"

app.register_blueprint(user_blueprint, url_prefix="/users")
app.register_blueprint(street_list_blueprint, url_prefix="/streetlists")
# app.register_blueprint(street_report_blueprint, url_prefix="/streetreports")


@app.before_first_request
def init_db():
    Database.initialize()


@app.route('/')
def home():
    return render_template('home.jinja2')


@app.route('/about_popup.jinja2')
def info_popup():
    return render_template('about_popup.jinja2')

烧瓶视图文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# In this model, views.py files are the Flask Blueprint for this object.
# ie they describe what HTTP API endpoints are associated to objects of this class.

from flask import Blueprint, render_template, request, redirect, url_for

from Source.models.street_lists.street_list import StreetList

__author__ = 'jslvtr'


street_list_blueprint = Blueprint('street_lists', __name__)


@street_list_blueprint.route('/')
def index():
    prop_query = StreetList.get_from_mongo(streetpart="bum")
    return render_template('street_lists/street_list.jinja2', stores=prop_query)

您可以查看pocoo.org flask doc示例,并搜索其他so问题以查找我认为的flask蓝图模板示例。祝你好运!