如何在app/__init__.py
内分别从app/blueprint/__init__.py
和app/blueprint/views.py
导入函数和变量?
app/__init__.py
def main():
<..>
app/blueprint/__init__.py
from flask import Blueprint
blueprint = Blueprint('blueprint', __name__, template_folder='templates')
app/blueprint/views.py
import blueprint
import main
答案 0 :(得分:1)
from app.__init__ import *
from app.blueprint.__init__ import *
应从两个文件中导入所有函数和变量。
但是,虽然我认为不应该使用 init 文件。
下面的Flask蓝图示例我使用了我的项目,来自Udemy教程的学习结构,我认为这个想法通常是使用init文件将Python目录放入包中,以便您可以在其中导入内容。您可能更好地使用要导入的函数(更少的变量)创建新文件,也许专家会确认,但我认为通常您将Python初始化文件留空,除非您真的知道自己在做什么。
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')
Flask Views文件示例:
# 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示例,并在其中搜索Flask蓝图模板示例的其他SO问题。祝你好运!
答案 1 :(得分:1)
我阅读了Will Croxford建议的博客,这是我的问题的解决方案:
应用程序/蓝图/ views.py
from app import main
from app.blueprint import blueprint