Trouble trying to use blueprints
Closed this issue · 2 comments
Lxstr commented
Hi there, sorry I'm struggling with how to use with blueprints in the following context, any help would be great. I don't know how to successfully use the decorator within the blueprint. Thanks
init.py
Other imports....
from app.webapp import server_bp
from flask_sitemapper import Sitemapper
sitemapper = Sitemapper()
def create_app():
server = Flask(__name__)
server.config.from_object(BaseConfig)
register_dashapps(server)
register_blueprints(server)
sitemapper.init_app(server)
return server
def register_blueprints(server):
server.register_blueprint(server_bp)
webapp.py
server_bp = Blueprint("main", __name__)
@server_bp.route("/")
def index():
if BaseConfig.DEMO_TOKEN:
return redirect("/sales")
etc
h-janes commented
Hi, thanks for opening the issue - I will improve the documentation on this
The way I would usually do this is to set up the extensions in a separate extensions.py
file. For your project this might look like this:
.
└── app/
├── __init__.py
├── extensions.py
└── webapp.py
extensions.py
from flask_sitemapper import Sitemapper
sitemapper = Sitemapper()
# you could also set up other extensions e.g. sqlalchemy in this file
__init__.py
# other imports....
from app.webapp import server_bp
from app.extensions import sitemapper # import from extensions file
def create_app():
server = Flask(__name__)
server.config.from_object(BaseConfig)
register_dashapps(server)
register_blueprints(server)
sitemapper.init_app(server) # initialise after registering all blueprints
return server
def register_blueprints(server):
server.register_blueprint(server_bp)
webapp.py
# other imports....
from app.extensions import sitemapper # import from extensions file
server_bp = Blueprint("main", __name__)
@sitemapper.include(lastmod="2023-03-21") # add this route to the sitemap with desired args
@server_bp.route("/")
def index():
if BaseConfig.DEMO_TOKEN:
return redirect("/sales")
# etc
Let me know how it goes and thanks for using the extension :)
Lxstr commented
That seems to have worked perfectly now. Thanks for the clarification and the extension!