CamomillaCamomilla
Home
QuickStart
How to
Demo
GitHub
Home
QuickStart
How to
Demo
GitHub
  • Home
  • QuickStart
  • How to
    • Use API
    • Use Media
    • Use Menu
    • Use Modeltranslation
    • Use Pages Context
    • Use Pages
    • Use Settings
    • Use StructuredJSONField
  • Changelog
  • Contribute
  • License

🧩 Use Pages Context

With new page models we lost the ability to write view functions. Then we are giving you a way to inject more context inside a page in a simple manner.

You are going to apply the registration approach.

The game rules are simple, first of all:

  • Make a file called template_context.py in your app directory. Camomilla is built to autodiscover those files.

Inside the file you can provide context with the register function in 2 different ways.

Template based registration

To register some additional context to a specific template wite in the template_context.py file the following:

from camomilla.templates_context.rendering import register
from camomilla.models import Media

@register("website/home.html")
def home_page():
    return {
    "title": "My fantastic title",
    "content": "My wanderfull content",
    "media_gallery": Media.objects.all(),
    }

Model based registration

To register some additional context to a specific page wite in the template_context.py file the following:

from camomilla.templates_context.rendering import register
from camomilla.models import Media, Page

@register(page_model=Page)
def home_page():
    return {
    "title": "My fantastic title",
    "content": "My wanderfull content",
    "media_gallery": Media.objects.all(),
    }

Additional **kwargs

You can access to two usefull kwargs in template_context functions. The request kwarg contains the django http request. The super_ctx kwarg contains the context coming from upper functions or camomilla default context

from camomilla.templates_context.rendering import register
from camomilla.models import Media, Page

@register(page_model=Page)
def home_page(request, super_ctx):
    # your custom code can use request or super_ctx to provide more precise context
    return {
    "title": "My fantastic title",
    "content": "My wanderfull content",
    "media_gallery": Media.objects.all(),
    }
Last Updated: 9/30/23, 10:01 AM
Contributors: bnznamco
Prev
Use Modeltranslation
Next
Use Pages