我是新來的Python,但我已經遇到了這個問題。我不知道如果我的解決方案是正確的,但它的工作原理:
首先,你必須在application.py初始化瓶的應用程序的每個用戶
/flaskapp
/application.py
/templates (default template goes here)
__init__.py # default module flaskapp
views.py # here you can define methods for default module (like Action in MVC)
/hello.html
/static
/userdata
/user1
__init__.py # user1 module
views.py # here you can define methods for user1 module
/template1
hello.html
/template2
hello.html
/user2
__init__.py # user2 module
views.py # here you can define methods for user2 module
/template1
hello.html
/template2
hello.html
創建模塊,添加全局方法render_page_from和註冊的藍圖
app = Flask(__name__)
def render_page_from(controller_name, template_name_or_list, **context):
# here you can choose any controller or use default
app.jinja_loader.searchpath.clear()
blueprint = app.blueprints[controller_name]
app.jinja_loader.searchpath.append(blueprint.template_folder)
return render_template(template_name_or_list, context=context)
from flaskapp.user1 import controller as user1_controller
from flaskapp.user2 import controller as user2_controller
app.register_blueprint(user1_controller)
app.register_blueprint(user2_controller)
每個模塊中(用戶1,用戶2等)在初始化的.py
templates_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
controller = Blueprint('user1', __name__, url_prefix='/user1', template_folder = templates_folder)
import flaskapp.user1.views
012初始化藍圖
最後加視圖(動作)方法的views.py這樣
from LocalHub.client import controller
@controller.route('/hello')
def hello():
"""Renders the page"""
return render_page_from(controller.name, 'hello.html', title='hello')
您不必在列表或者字典聲明中跳過Python中的換行符。 – fiatjaf
如果有人遇到問題:這在Heroku中不起作用。你必須通過沒有第一個'/'的路徑(比如''flaskapp/userdata'')。 – fiatjaf
這沒有爲我工作。幫幫我 – Kishan