Advanced usage
Page context (path, query, user parameters)
When you use default Pyue.add_page(Page, url), it looses ability to handle query parameters
or some context (like DB info). But you can also provide special function, that handles context
(which is called context_func):
# Path parameter example
page = Page("greeting.html")
app.add_page(
page,
url="/hello/<name>",
context_func=lambda name: {"name": name}
)
# Multiple path parameters
def product_context(category, product_id):
product = get_product(category, product_id)
related = get_related_products(category, limit=5)
return {"product": product, "related": related}
page = Page("product.html")
app.add_page(page, url="/products/<category>/<int:product_id>", context_func=product_context)
# DB context example
def user_context(user_id):
user = get_user_by_id(user_id)
if user is None:
abort(404)
return {"user": user}
page = Page("profile.html")
app.add_page(page, url="/user/<int:user_id>", context_func=user_context)
# Query parameters example
from flask import request
def search_context():
query = request.args.get("q", "")
page_num = request.args.get("page", 1, type=int)
results = perform_search(query, page=page_num)
return {"query": query, "results": results, "page": page_num}
page = Page("search.html")
app.add_page(page, url="/search", context_func=search_context)