Python,Flask:在蓝图

时间:2017-10-23 14:18:07

标签: python flask

如何在app/__init__.py内分别从app/blueprint/__init__.pyapp/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

2 个答案:

答案 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