django-components/dev/reference/api/index.html

1555 lines
No EOL
632 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="A way to create simple reusable template components in Django."><link href=https://django-components.github.io/django-components/latest/reference/api/ rel=canonical><link href=../../guides/devguides/slots_and_blocks/ rel=prev><link href=../commands/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.6.10"><title>API - Django-Components</title><link rel=stylesheet href=../../assets/stylesheets/main.4af4bdda.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.06af60db.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../assets/_markdown_exec_pyodide.css><link rel=stylesheet href=../../assets/_mkdocstrings.css><link rel=stylesheet href=../../css/timeago.css><link rel=stylesheet href=../../css/style.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><meta property=og:type content=website><meta property=og:title content="API - Django-Components"><meta property=og:description content="A way to create simple reusable template components in Django."><meta property=og:image content=https://django-components.github.io/django-components/latest/assets/images/social/reference/api.png><meta property=og:image:type content=image/png><meta property=og:image:width content=1200><meta property=og:image:height content=630><meta content=https://django-components.github.io/django-components/latest/reference/api/ property=og:url><meta name=twitter:card content=summary_large_image><meta name=twitter:title content="API - Django-Components"><meta name=twitter:description content="A way to create simple reusable template components in Django."><meta name=twitter:image content=https://django-components.github.io/django-components/latest/assets/images/social/reference/api.png></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#api class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title=Django-Components class="md-header__button md-logo" aria-label=Django-Components data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Django-Components </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> API </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media=(prefers-color-scheme) data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=teal data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_2 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=teal data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_2> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <a href=javascript:void(0) class="md-search__icon md-icon" title=Share aria-label=Share data-clipboard data-clipboard-text data-md-component=search-share tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> </a> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/django-components/django-components title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> django-components/django-components </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../../overview/welcome/ class=md-tabs__link> Overview </a> </li> <li class=md-tabs__item> <a href=../../getting_started/your_first_component/ class=md-tabs__link> Getting Started </a> </li> <li class=md-tabs__item> <a href=../../concepts/fundamentals/single_file_components/ class=md-tabs__link> Concepts </a> </li> <li class=md-tabs__item> <a href=../../guides/setup/syntax_highlight/ class=md-tabs__link> Guides </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=./ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../release_notes/ class=md-tabs__link> Release Notes </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title=Django-Components class="md-nav__button md-logo" aria-label=Django-Components data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> Django-Components </label> <div class=md-nav__source> <a href=https://github.com/django-components/django-components title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> django-components/django-components </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_1> <label class=md-nav__link for=__nav_1 id=__nav_1_label tabindex=0> <span class=md-ellipsis> Overview </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Overview </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../overview/welcome/ class=md-nav__link> <span class=md-ellipsis> Welcome to Django Components </span> </a> </li> <li class=md-nav__item> <a href=../../overview/compatibility/ class=md-nav__link> <span class=md-ellipsis> Compatibility </span> </a> </li> <li class=md-nav__item> <a href=../../overview/installation/ class=md-nav__link> <span class=md-ellipsis> Installation </span> </a> </li> <li class=md-nav__item> <a href=../../overview/security_notes/ class=md-nav__link> <span class=md-ellipsis> Security notes 🚨 </span> </a> </li> <li class=md-nav__item> <a href=../../overview/community/ class=md-nav__link> <span class=md-ellipsis> Community </span> </a> </li> <li class=md-nav__item> <a href=../../overview/contributing/ class=md-nav__link> <span class=md-ellipsis> Contributing </span> </a> </li> <li class=md-nav__item> <a href=../../overview/development/ class=md-nav__link> <span class=md-ellipsis> Development </span> </a> </li> <li class=md-nav__item> <a href=../../overview/performance/ class=md-nav__link> <span class=md-ellipsis> Performance </span> </a> </li> <li class=md-nav__item> <a href=../../overview/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../overview/license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Getting Started </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Getting Started </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../getting_started/your_first_component/ class=md-nav__link> <span class=md-ellipsis> Create your first component </span> </a> </li> <li class=md-nav__item> <a href=../../getting_started/adding_js_and_css/ class=md-nav__link> <span class=md-ellipsis> Adding JS and CSS </span> </a> </li> <li class=md-nav__item> <a href=../../getting_started/components_in_templates/ class=md-nav__link> <span class=md-ellipsis> Components in templates </span> </a> </li> <li class=md-nav__item> <a href=../../getting_started/parametrising_components/ class=md-nav__link> <span class=md-ellipsis> Parametrising components </span> </a> </li> <li class=md-nav__item> <a href=../../getting_started/adding_slots/ class=md-nav__link> <span class=md-ellipsis> Adding slots </span> </a> </li> <li class=md-nav__item> <a href=../../getting_started/rendering_components/ class=md-nav__link> <span class=md-ellipsis> Rendering components </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_3> <label class=md-nav__link for=__nav_3 id=__nav_3_label tabindex=0> <span class=md-ellipsis> Concepts </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Concepts </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_3_1> <label class=md-nav__link for=__nav_3_1 id=__nav_3_1_label tabindex=0> <span class=md-ellipsis> Fundamentals </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_1_label aria-expanded=false> <label class=md-nav__title for=__nav_3_1> <span class="md-nav__icon md-icon"></span> Fundamentals </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../concepts/fundamentals/single_file_components/ class=md-nav__link> <span class=md-ellipsis> Single-file components </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/components_in_python/ class=md-nav__link> <span class=md-ellipsis> Components in Python </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/access_component_input/ class=md-nav__link> <span class=md-ellipsis> Accessing component inputs </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/component_defaults/ class=md-nav__link> <span class=md-ellipsis> Component defaults </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/component_context_scope/ class=md-nav__link> <span class=md-ellipsis> Component context and scope </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/template_tag_syntax/ class=md-nav__link> <span class=md-ellipsis> Template tag syntax </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/slots/ class=md-nav__link> <span class=md-ellipsis> Slots </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/html_attributes/ class=md-nav__link> <span class=md-ellipsis> HTML attributes </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/defining_js_css_html_files/ class=md-nav__link> <span class=md-ellipsis> Defining HTML / JS / CSS files </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/autodiscovery/ class=md-nav__link> <span class=md-ellipsis> Autodiscovery </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/component_views_urls/ class=md-nav__link> <span class=md-ellipsis> Component views and URLs </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/http_request/ class=md-nav__link> <span class=md-ellipsis> HTTP Request </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/fundamentals/subclassing_components/ class=md-nav__link> <span class=md-ellipsis> Subclassing components </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_3_2> <label class=md-nav__link for=__nav_3_2 id=__nav_3_2_label tabindex=0> <span class=md-ellipsis> Advanced </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_2_label aria-expanded=false> <label class=md-nav__title for=__nav_3_2> <span class="md-nav__icon md-icon"></span> Advanced </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../concepts/advanced/rendering_js_css/ class=md-nav__link> <span class=md-ellipsis> Rendering JS / CSS </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/html_fragments/ class=md-nav__link> <span class=md-ellipsis> HTML fragments </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/provide_inject/ class=md-nav__link> <span class=md-ellipsis> Prop drilling and provide / inject </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/hooks/ class=md-nav__link> <span class=md-ellipsis> Lifecycle hooks </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/component_registry/ class=md-nav__link> <span class=md-ellipsis> Registering components </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/typing_and_validation/ class=md-nav__link> <span class=md-ellipsis> Typing and validation </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/template_tags/ class=md-nav__link> <span class=md-ellipsis> Custom template tags </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/tag_formatter/ class=md-nav__link> <span class=md-ellipsis> Tag formatters </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/extensions/ class=md-nav__link> <span class=md-ellipsis> Extensions </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/testing/ class=md-nav__link> <span class=md-ellipsis> Testing </span> </a> </li> <li class=md-nav__item> <a href=../../concepts/advanced/authoring_component_libraries/ class=md-nav__link> <span class=md-ellipsis> Authoring component libraries </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> Guides </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> Guides </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_4_1> <label class=md-nav__link for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class=md-ellipsis> Setup </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> Setup </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../guides/setup/syntax_highlight/ class=md-nav__link> <span class=md-ellipsis> Syntax highlighting </span> </a> </li> <li class=md-nav__item> <a href=../../guides/setup/caching/ class=md-nav__link> <span class=md-ellipsis> Caching </span> </a> </li> <li class=md-nav__item> <a href=../../guides/setup/development_server/ class=md-nav__link> <span class=md-ellipsis> Development server </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_4_2> <label class=md-nav__link for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class=md-ellipsis> Other </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> Other </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../guides/other/troubleshooting/ class=md-nav__link> <span class=md-ellipsis> Troubleshooting </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_4_3> <label class=md-nav__link for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class=md-ellipsis> Dev Guides </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> Dev Guides </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../guides/devguides/dependency_mgmt/ class=md-nav__link> <span class=md-ellipsis> JS and CSS rendering </span> </a> </li> <li class=md-nav__item> <a href=../../guides/devguides/slot_rendering/ class=md-nav__link> <span class=md-ellipsis> Slot rendering </span> </a> </li> <li class=md-nav__item> <a href=../../guides/devguides/slots_and_blocks/ class=md-nav__link> <span class=md-ellipsis> Using slot and block tags </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5 checked> <label class=md-nav__link for=__nav_5 id=__nav_5_label tabindex> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=true> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> API </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> API </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#django_components.BaseNode class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;BaseNode </span> </a> <nav class=md-nav aria-label= BaseNode> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.BaseNode.active_flags class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;active_flags </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.allowed_flags class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;allowed_flags </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.end_tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;end_tag </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.flags class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;flags </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.node_id class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;node_id </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.nodelist class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;nodelist </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.params class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;params </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;tag </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.parse class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;parse </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;register </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.render class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;render </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.unregister class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;unregister </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.CommandLiteralAction class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;CommandLiteralAction </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;Component </span> </a> <nav class=md-nav aria-label= Component> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.Component.Defaults class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;Defaults </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.Media class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;Media </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.Url class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;Url </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.View class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;View </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.class_id class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;class_id </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.context_processors_data class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;context_processors_data </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.css class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;css </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.css_file class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;css_file </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.defaults class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;defaults </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.id class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;id </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.input class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;input </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.is_filled class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;is_filled </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.js class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;js </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.js_file class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;js_file </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.media class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;media </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.media_class class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;media_class </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.outer_context class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;outer_context </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.registered_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;registered_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.registry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;registry </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.request class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;request </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.response_class class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;response_class </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.template class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;template </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.template_file class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;template_file </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.template_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;template_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.url class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;url </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.view class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;view </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.as_view class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;as_view </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.get_context_data class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get_context_data </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.get_template class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get_template </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.get_template_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get_template_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.inject class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;inject </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.on_render_after class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_render_after </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.on_render_before class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_render_before </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.render class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;render </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.render_to_response class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;render_to_response </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentExtension </span> </a> <nav class=md-nav aria-label= ComponentExtension> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentExtension.ExtensionClass class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;ExtensionClass </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.class_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;class_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.commands class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;commands </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.urls class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;urls </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_class_created class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_class_created </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_class_deleted class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_class_deleted </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_data class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_data </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_input class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_input </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_registered class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_registered </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_unregistered class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_unregistered </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_registry_created class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_registry_created </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_registry_deleted class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_registry_deleted </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentFileEntry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentFileEntry </span> </a> <nav class=md-nav aria-label= ComponentFileEntry> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentFileEntry.dot_path class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;dot_path </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentFileEntry.filepath class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;filepath </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentMediaInput class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentMediaInput </span> </a> <nav class=md-nav aria-label= ComponentMediaInput> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentMediaInput.css class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;css </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentMediaInput.extend class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;extend </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentMediaInput.js class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;js </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentMediaInputPath class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;ComponentMediaInputPath </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentRegistry </span> </a> <nav class=md-nav aria-label= ComponentRegistry> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentRegistry--using-registry-to-share-components class=md-nav__link> <span class=md-ellipsis> Using registry to share components </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.library class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;library </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.settings class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;settings </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.all class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;all </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.clear class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;clear </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.get class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.has class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;has </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;register </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.unregister class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;unregister </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentUrl class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentUrl </span> </a> <nav class=md-nav aria-label= ComponentUrl> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentUrl.public class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;public </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentUrl.url class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;url </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentVars class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentVars </span> </a> <nav class=md-nav aria-label= ComponentVars> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentVars.is_filled class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;is_filled </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentView class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentView </span> </a> <nav class=md-nav aria-label= ComponentView> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentView.component class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;component </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.delete class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;delete </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.get class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.head class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;head </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.options class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;options </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.patch class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;patch </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.post class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;post </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.put class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;put </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.trace class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;trace </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentsSettings </span> </a> <nav class=md-nav aria-label= ComponentsSettings> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.app_dirs class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;app_dirs </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.autodiscover class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;autodiscover </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.cache class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;cache </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.context_behavior class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;context_behavior </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.debug_highlight_components class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;debug_highlight_components </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.debug_highlight_slots class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;debug_highlight_slots </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.dirs class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;dirs </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.dynamic_component_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;dynamic_component_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.extensions class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;extensions </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.forbidden_static_files class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;forbidden_static_files </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.libraries class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;libraries </span> </a> <nav class=md-nav aria-label= libraries> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.libraries--manually-loading-libraries class=md-nav__link> <span class=md-ellipsis> Manually loading libraries </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.multiline_tags class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;multiline_tags </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.reload_on_file_change class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;reload_on_file_change </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.reload_on_template_change class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;reload_on_template_change </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.static_files_allowed class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;static_files_allowed </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.static_files_forbidden class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;static_files_forbidden </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.tag_formatter class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;tag_formatter </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.template_cache_size class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;template_cache_size </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ContextBehavior class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ContextBehavior </span> </a> <nav class=md-nav aria-label= ContextBehavior> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ContextBehavior.DJANGO class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;DJANGO </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ContextBehavior.ISOLATED class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;ISOLATED </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.Default class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;Default </span> </a> <nav class=md-nav aria-label= Default> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.Default.value class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.EmptyDict class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;EmptyDict </span> </a> </li> <li class=md-nav__item> <a href=#django_components.EmptyTuple class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;EmptyTuple </span> </a> </li> <li class=md-nav__item> <a href=#django_components.RegistrySettings class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;RegistrySettings </span> </a> <nav class=md-nav aria-label= RegistrySettings> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.RegistrySettings.CONTEXT_BEHAVIOR class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;CONTEXT_BEHAVIOR </span> </a> </li> <li class=md-nav__item> <a href=#django_components.RegistrySettings.TAG_FORMATTER class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;TAG_FORMATTER </span> </a> </li> <li class=md-nav__item> <a href=#django_components.RegistrySettings.context_behavior class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;context_behavior </span> </a> </li> <li class=md-nav__item> <a href=#django_components.RegistrySettings.tag_formatter class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;tag_formatter </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.Slot class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;Slot </span> </a> <nav class=md-nav aria-label= Slot> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.Slot.component_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;component_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.content_func class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;content_func </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.do_not_call_in_templates class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;do_not_call_in_templates </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.escaped class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;escaped </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.nodelist class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;nodelist </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.slot_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;slot_name </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.SlotContent class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;SlotContent </span> </a> </li> <li class=md-nav__item> <a href=#django_components.SlotFunc class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;SlotFunc </span> </a> </li> <li class=md-nav__item> <a href=#django_components.SlotRef class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;SlotRef </span> </a> </li> <li class=md-nav__item> <a href=#django_components.SlotResult class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;SlotResult </span> </a> </li> <li class=md-nav__item> <a href=#django_components.TagFormatterABC class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;TagFormatterABC </span> </a> <nav class=md-nav aria-label= TagFormatterABC> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.TagFormatterABC.end_tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;end_tag </span> </a> </li> <li class=md-nav__item> <a href=#django_components.TagFormatterABC.parse class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;parse </span> </a> </li> <li class=md-nav__item> <a href=#django_components.TagFormatterABC.start_tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;start_tag </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.TagResult class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;TagResult </span> </a> <nav class=md-nav aria-label= TagResult> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.TagResult.component_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;component_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.TagResult.tokens class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;tokens </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.all_components class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;all_components </span> </a> </li> <li class=md-nav__item> <a href=#django_components.all_registries class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;all_registries </span> </a> </li> <li class=md-nav__item> <a href=#django_components.autodiscover class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;autodiscover </span> </a> </li> <li class=md-nav__item> <a href=#django_components.cached_template class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;cached_template </span> </a> </li> <li class=md-nav__item> <a href=#django_components.format_attributes class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;format_attributes </span> </a> </li> <li class=md-nav__item> <a href=#django_components.get_component_by_class_id class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;get_component_by_class_id </span> </a> </li> <li class=md-nav__item> <a href=#django_components.get_component_dirs class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;get_component_dirs </span> </a> </li> <li class=md-nav__item> <a href=#django_components.get_component_files class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;get_component_files </span> </a> </li> <li class=md-nav__item> <a href=#django_components.get_component_url class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;get_component_url </span> </a> </li> <li class=md-nav__item> <a href=#django_components.import_libraries class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;import_libraries </span> </a> </li> <li class=md-nav__item> <a href=#django_components.merge_attributes class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;merge_attributes </span> </a> </li> <li class=md-nav__item> <a href=#django_components.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;register </span> </a> </li> <li class=md-nav__item> <a href=#django_components.registry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;registry </span> </a> </li> <li class=md-nav__item> <a href=#django_components.render_dependencies class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;render_dependencies </span> </a> </li> <li class=md-nav__item> <a href=#django_components.template_tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;template_tag </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../commands/ class=md-nav__link> <span class=md-ellipsis> Commands </span> </a> </li> <li class=md-nav__item> <a href=../components/ class=md-nav__link> <span class=md-ellipsis> Components </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../extension_commands/ class=md-nav__link> <span class=md-ellipsis> Extension commands </span> </a> </li> <li class=md-nav__item> <a href=../extension_hooks/ class=md-nav__link> <span class=md-ellipsis> Extension hooks </span> </a> </li> <li class=md-nav__item> <a href=../extension_urls/ class=md-nav__link> <span class=md-ellipsis> Extension URLs </span> </a> </li> <li class=md-nav__item> <a href=../middlewares/ class=md-nav__link> <span class=md-ellipsis> Middlewares </span> </a> </li> <li class=md-nav__item> <a href=../settings/ class=md-nav__link> <span class=md-ellipsis> Settings </span> </a> </li> <li class=md-nav__item> <a href=../signals/ class=md-nav__link> <span class=md-ellipsis> Signals </span> </a> </li> <li class=md-nav__item> <a href=../tag_formatters/ class=md-nav__link> <span class=md-ellipsis> Tag formatters </span> </a> </li> <li class=md-nav__item> <a href=../template_tags/ class=md-nav__link> <span class=md-ellipsis> Template tags </span> </a> </li> <li class=md-nav__item> <a href=../template_vars/ class=md-nav__link> <span class=md-ellipsis> Template vars </span> </a> </li> <li class=md-nav__item> <a href=../urls/ class=md-nav__link> <span class=md-ellipsis> URLs </span> </a> </li> <li class=md-nav__item> <a href=../testing_api/ class=md-nav__link> <span class=md-ellipsis> Testing API </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../release_notes/ class=md-nav__link> <span class=md-ellipsis> Release Notes </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#django_components.BaseNode class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;BaseNode </span> </a> <nav class=md-nav aria-label= BaseNode> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.BaseNode.active_flags class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;active_flags </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.allowed_flags class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;allowed_flags </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.end_tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;end_tag </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.flags class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;flags </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.node_id class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;node_id </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.nodelist class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;nodelist </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.params class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;params </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;tag </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.parse class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;parse </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;register </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.render class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;render </span> </a> </li> <li class=md-nav__item> <a href=#django_components.BaseNode.unregister class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;unregister </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.CommandLiteralAction class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;CommandLiteralAction </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;Component </span> </a> <nav class=md-nav aria-label= Component> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.Component.Defaults class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;Defaults </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.Media class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;Media </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.Url class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;Url </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.View class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;View </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.class_id class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;class_id </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.context_processors_data class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;context_processors_data </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.css class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;css </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.css_file class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;css_file </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.defaults class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;defaults </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.id class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;id </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.input class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;input </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.is_filled class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;is_filled </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.js class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;js </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.js_file class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;js_file </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.media class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;media </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.media_class class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;media_class </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.outer_context class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;outer_context </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.registered_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;registered_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.registry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;registry </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.request class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;request </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.response_class class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;response_class </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.template class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;template </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.template_file class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;template_file </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.template_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;template_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.url class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;url </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.view class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;view </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.as_view class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;as_view </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.get_context_data class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get_context_data </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.get_template class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get_template </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.get_template_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get_template_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.inject class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;inject </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.on_render_after class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_render_after </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.on_render_before class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_render_before </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.render class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;render </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Component.render_to_response class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;render_to_response </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentExtension </span> </a> <nav class=md-nav aria-label= ComponentExtension> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentExtension.ExtensionClass class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;ExtensionClass </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.class_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;class_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.commands class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;commands </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.urls class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;urls </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_class_created class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_class_created </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_class_deleted class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_class_deleted </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_data class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_data </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_input class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_input </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_registered class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_registered </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_component_unregistered class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_component_unregistered </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_registry_created class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_registry_created </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentExtension.on_registry_deleted class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;on_registry_deleted </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentFileEntry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentFileEntry </span> </a> <nav class=md-nav aria-label= ComponentFileEntry> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentFileEntry.dot_path class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;dot_path </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentFileEntry.filepath class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;filepath </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentMediaInput class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentMediaInput </span> </a> <nav class=md-nav aria-label= ComponentMediaInput> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentMediaInput.css class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;css </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentMediaInput.extend class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;extend </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentMediaInput.js class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;js </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentMediaInputPath class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;ComponentMediaInputPath </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentRegistry </span> </a> <nav class=md-nav aria-label= ComponentRegistry> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentRegistry--using-registry-to-share-components class=md-nav__link> <span class=md-ellipsis> Using registry to share components </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.library class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;library </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.settings class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;settings </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.all class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;all </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.clear class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;clear </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.get class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.has class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;has </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;register </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentRegistry.unregister class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;unregister </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentUrl class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentUrl </span> </a> <nav class=md-nav aria-label= ComponentUrl> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentUrl.public class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;public </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentUrl.url class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;url </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentVars class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentVars </span> </a> <nav class=md-nav aria-label= ComponentVars> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentVars.is_filled class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;is_filled </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentView class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentView </span> </a> <nav class=md-nav aria-label= ComponentView> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentView.component class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;component </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.delete class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;delete </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.get class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.head class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;head </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.options class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;options </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.patch class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;patch </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.post class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;post </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.put class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;put </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentView.trace class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;trace </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentsSettings </span> </a> <nav class=md-nav aria-label= ComponentsSettings> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.app_dirs class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;app_dirs </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.autodiscover class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;autodiscover </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.cache class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;cache </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.context_behavior class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;context_behavior </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.debug_highlight_components class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;debug_highlight_components </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.debug_highlight_slots class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;debug_highlight_slots </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.dirs class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;dirs </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.dynamic_component_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;dynamic_component_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.extensions class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;extensions </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.forbidden_static_files class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;forbidden_static_files </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.libraries class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;libraries </span> </a> <nav class=md-nav aria-label= libraries> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.libraries--manually-loading-libraries class=md-nav__link> <span class=md-ellipsis> Manually loading libraries </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.multiline_tags class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;multiline_tags </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.reload_on_file_change class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;reload_on_file_change </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.reload_on_template_change class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;reload_on_template_change </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.static_files_allowed class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;static_files_allowed </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.static_files_forbidden class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;static_files_forbidden </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.tag_formatter class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;tag_formatter </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ComponentsSettings.template_cache_size class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;template_cache_size </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.ContextBehavior class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ContextBehavior </span> </a> <nav class=md-nav aria-label= ContextBehavior> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.ContextBehavior.DJANGO class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;DJANGO </span> </a> </li> <li class=md-nav__item> <a href=#django_components.ContextBehavior.ISOLATED class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;ISOLATED </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.Default class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;Default </span> </a> <nav class=md-nav aria-label= Default> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.Default.value class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.EmptyDict class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;EmptyDict </span> </a> </li> <li class=md-nav__item> <a href=#django_components.EmptyTuple class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;EmptyTuple </span> </a> </li> <li class=md-nav__item> <a href=#django_components.RegistrySettings class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;RegistrySettings </span> </a> <nav class=md-nav aria-label= RegistrySettings> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.RegistrySettings.CONTEXT_BEHAVIOR class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;CONTEXT_BEHAVIOR </span> </a> </li> <li class=md-nav__item> <a href=#django_components.RegistrySettings.TAG_FORMATTER class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;TAG_FORMATTER </span> </a> </li> <li class=md-nav__item> <a href=#django_components.RegistrySettings.context_behavior class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;context_behavior </span> </a> </li> <li class=md-nav__item> <a href=#django_components.RegistrySettings.tag_formatter class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;tag_formatter </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.Slot class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;Slot </span> </a> <nav class=md-nav aria-label= Slot> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.Slot.component_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;component_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.content_func class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;content_func </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.do_not_call_in_templates class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;do_not_call_in_templates </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.escaped class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;escaped </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.nodelist class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;nodelist </span> </a> </li> <li class=md-nav__item> <a href=#django_components.Slot.slot_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;slot_name </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.SlotContent class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;SlotContent </span> </a> </li> <li class=md-nav__item> <a href=#django_components.SlotFunc class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;SlotFunc </span> </a> </li> <li class=md-nav__item> <a href=#django_components.SlotRef class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;SlotRef </span> </a> </li> <li class=md-nav__item> <a href=#django_components.SlotResult class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;SlotResult </span> </a> </li> <li class=md-nav__item> <a href=#django_components.TagFormatterABC class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;TagFormatterABC </span> </a> <nav class=md-nav aria-label= TagFormatterABC> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.TagFormatterABC.end_tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;end_tag </span> </a> </li> <li class=md-nav__item> <a href=#django_components.TagFormatterABC.parse class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;parse </span> </a> </li> <li class=md-nav__item> <a href=#django_components.TagFormatterABC.start_tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;start_tag </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.TagResult class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;TagResult </span> </a> <nav class=md-nav aria-label= TagResult> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.TagResult.component_name class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;component_name </span> </a> </li> <li class=md-nav__item> <a href=#django_components.TagResult.tokens class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;tokens </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.all_components class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;all_components </span> </a> </li> <li class=md-nav__item> <a href=#django_components.all_registries class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;all_registries </span> </a> </li> <li class=md-nav__item> <a href=#django_components.autodiscover class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;autodiscover </span> </a> </li> <li class=md-nav__item> <a href=#django_components.cached_template class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;cached_template </span> </a> </li> <li class=md-nav__item> <a href=#django_components.format_attributes class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;format_attributes </span> </a> </li> <li class=md-nav__item> <a href=#django_components.get_component_by_class_id class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;get_component_by_class_id </span> </a> </li> <li class=md-nav__item> <a href=#django_components.get_component_dirs class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;get_component_dirs </span> </a> </li> <li class=md-nav__item> <a href=#django_components.get_component_files class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;get_component_files </span> </a> </li> <li class=md-nav__item> <a href=#django_components.get_component_url class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;get_component_url </span> </a> </li> <li class=md-nav__item> <a href=#django_components.import_libraries class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;import_libraries </span> </a> </li> <li class=md-nav__item> <a href=#django_components.merge_attributes class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;merge_attributes </span> </a> </li> <li class=md-nav__item> <a href=#django_components.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;register </span> </a> </li> <li class=md-nav__item> <a href=#django_components.registry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;registry </span> </a> </li> <li class=md-nav__item> <a href=#django_components.render_dependencies class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;render_dependencies </span> </a> </li> <li class=md-nav__item> <a href=#django_components.template_tag class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;template_tag </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href=https://github.com/django-components/django-components/edit/master/docs/reference/api.md title="Edit this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href=https://github.com/django-components/django-components/raw/master/docs/reference/api.md title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <!-- Autogenerated by reference.py --> <h1 id=api>API<a class=headerlink href=#api title="Permanent link">¤</a></h1> <div class="doc doc-object doc-class"> <h2 id=django_components.BaseNode class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">BaseNode</span> <a href=#django_components.BaseNode class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>BaseNode</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>params</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><span title=django_components.util.template_tag.TagAttr>TagAttr</span></span><span class=p>],</span> <span class=n>flags</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span> <span class=n>nodelist</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.template.base.NodeList>NodeList</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span> <span class=n>node_id</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>django.template.base.Node</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L201 target=_blank>See source code</a></p> <p>Node class for all django-components custom template tags.</p> <p>This class has a dual role:</p> <ol> <li> <p>It declares how a particular template tag should be parsed - By setting the <a href=../api#django_components.BaseNode.tag><code>tag</code></a>, <a href=../api#django_components.BaseNode.end_tag><code>end_tag</code></a>, and <a href=../api#django_components.BaseNode.allowed_flags><code>allowed_flags</code></a> attributes:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>SlotNode</span><span class=p>(</span><span class=n>BaseNode</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>tag</span> <span class=o>=</span> <span class=s2>&quot;slot&quot;</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>end_tag</span> <span class=o>=</span> <span class=s2>&quot;endslot&quot;</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>allowed_flags</span> <span class=o>=</span> <span class=p>[</span><span class=s2>&quot;required&quot;</span><span class=p>]</span>
</code></pre></div> <p>This will allow the template tag <code>{% slot %}</code> to be used like this:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=cp>{%</span> <span class=k>slot</span> <span class=nv>required</span> <span class=cp>%}</span><span class=x> ... </span><span class=cp>{%</span> <span class=k>endslot</span> <span class=cp>%}</span>
</code></pre></div> </li> <li> <p>The <a href=../api#django_components.BaseNode.render><code>render</code></a> method is the actual implementation of the template tag.</p> <p>This is where the tag's logic is implemented:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyNode</span><span class=p>(</span><span class=n>BaseNode</span><span class=p>):</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a> <span class=n>tag</span> <span class=o>=</span> <span class=s2>&quot;mynode&quot;</span>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a>
<a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a> <span class=k>def</span><span class=w> </span><span class=nf>render</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>context</span><span class=p>:</span> <span class=n>Context</span><span class=p>,</span> <span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n>Any</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=nb>str</span><span class=p>:</span>
<a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a> <span class=k>return</span> <span class=sa>f</span><span class=s2>&quot;Hello, </span><span class=si>{</span><span class=n>name</span><span class=si>}</span><span class=s2>!&quot;</span>
</code></pre></div> <p>This will allow the template tag <code>{% mynode %}</code> to be used like this:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=cp>{%</span> <span class=k>mynode</span> <span class=nv>name</span><span class=o>=</span><span class=s2>&quot;John&quot;</span> <span class=cp>%}</span>
</code></pre></div> </li> </ol> <p>The template tag accepts parameters as defined on the <a href=../api#django_components.BaseNode.render><code>render</code></a> method's signature.</p> <p>For more info, see <a href=../api#django_components.BaseNode.render><code>BaseNode.render()</code></a>.</p> <p><span class=doc-section-title>Methods:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" parse
classmethod
(django_components.BaseNode.parse)" href=#django_components.BaseNode.parse>parse</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" register
classmethod
(django_components.BaseNode.register)" href=#django_components.BaseNode.register>register</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" render (django_components.BaseNode.render)" href=#django_components.BaseNode.render>render</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" unregister
classmethod
(django_components.BaseNode.unregister)" href=#django_components.BaseNode.unregister>unregister</a></code></b> <div class=doc-md-description> </div> </li> </ul> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" active_flags
property
(django_components.BaseNode.active_flags)" href=#django_components.BaseNode.active_flags>active_flags</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" allowed_flags
class-attribute
instance-attribute
(django_components.BaseNode.allowed_flags)" href=#django_components.BaseNode.allowed_flags>allowed_flags</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" end_tag
class-attribute
instance-attribute
(django_components.BaseNode.end_tag)" href=#django_components.BaseNode.end_tag>end_tag</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" flags
instance-attribute
(django_components.BaseNode.flags)" href=#django_components.BaseNode.flags>flags</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" node_id
instance-attribute
(django_components.BaseNode.node_id)" href=#django_components.BaseNode.node_id>node_id</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" nodelist
instance-attribute
(django_components.BaseNode.nodelist)" href=#django_components.BaseNode.nodelist>nodelist</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" params
instance-attribute
(django_components.BaseNode.params)" href=#django_components.BaseNode.params>params</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" tag
instance-attribute
(django_components.BaseNode.tag)" href=#django_components.BaseNode.tag>tag</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.BaseNode.active_flags class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">active_flags</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.BaseNode.active_flags class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>active_flags</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L329 target=_blank>See source code</a></p> <p>Flags that were set for this specific instance.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.BaseNode.allowed_flags class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">allowed_flags</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.BaseNode.allowed_flags class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>allowed_flags</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L276 target=_blank>See source code</a></p> <p>The allowed flags for this tag.</p> <p>E.g. <code>["required"]</code> will allow this tag to be used like <code>{% slot required %}</code>.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.BaseNode.end_tag class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">end_tag</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.BaseNode.end_tag class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>end_tag</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L263 target=_blank>See source code</a></p> <p>The end tag name.</p> <p>E.g. <code>"endcomponent"</code> or <code>"endslot"</code> will make this class match template tags <code>{% endcomponent %}</code> or <code>{% endslot %}</code>.</p> <p>If not set, then this template tag has no end tag.</p> <p>So instead of <code>{% component %} ... {% endcomponent %}</code>, you'd use only <code>{% component %}</code>.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.BaseNode.flags class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">flags</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.BaseNode.flags class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>flags</span> <span class=o>=</span> <span class=n><span title=django_components.node.BaseNode(flags)>flags</span></span> <span class=ow>or</span> <span class=p>{</span><span class=n><span title=flag>flag</span></span><span class=p>:</span> <span class=n>Falsefor</span> <span class=n><span title=flag>flag</span></span> <span class=ow>in</span> <span class=n><span title=django_components.node.BaseNode(self).allowed_flags>allowed_flags</span></span> <span class=ow>or</span> <span class=p>[]}</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.BaseNode.node_id class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">node_id</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.BaseNode.node_id class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>node_id</span> <span class=o>=</span> <span class=n><span title=django_components.node.BaseNode(node_id)>node_id</span></span> <span class=ow>or</span> <span class=n><span title=django_components.util.misc.gen_id>gen_id</span></span><span class=p>()</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.BaseNode.nodelist class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">nodelist</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.BaseNode.nodelist class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>nodelist</span> <span class=o>=</span> <span class=n><span title=django_components.node.BaseNode(nodelist)>nodelist</span></span> <span class=ow>or</span> <span class=n><span title=django.template.base.NodeList>NodeList</span></span><span class=p>()</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.BaseNode.params class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">params</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.BaseNode.params class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>params</span> <span class=o>=</span> <span class=n><span title=django_components.node.BaseNode(params)>params</span></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.BaseNode.tag class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">tag</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.BaseNode.tag class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>tag</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L255 target=_blank>See source code</a></p> <p>The tag name.</p> <p>E.g. <code>"component"</code> or <code>"slot"</code> will make this class match template tags <code>{% component %}</code> or <code>{% slot %}</code>.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.BaseNode.parse class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">parse</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href=#django_components.BaseNode.parse class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>parse</span><span class=p>(</span><span class=n>parser</span><span class=p>:</span> <span class=n><span title=django.template.base.Parser>Parser</span></span><span class=p>,</span> <span class=n>token</span><span class=p>:</span> <span class=n><span title=django.template.base.Token>Token</span></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-internal" title=" BaseNode (django_components.node.BaseNode)" href=#django_components.BaseNode>BaseNode</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L337 target=_blank>See source code</a></p> <p>This function is what is passed to Django's <code>Library.tag()</code> when <a href=https://docs.djangoproject.com/en/5.1/howto/custom-template-tags/#registering-the-tag>registering the tag</a>.</p> <p>In other words, this method is called by Django's template parser when we encounter a tag that matches this node's tag, e.g. <code>{% component %}</code> or <code>{% slot %}</code>.</p> <p>To register the tag, you can use <a href=../api#django_components.BaseNode.register><code>BaseNode.register()</code></a>.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.BaseNode.register class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">register</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href=#django_components.BaseNode.register class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>register</span><span class=p>(</span><span class=n>library</span><span class=p>:</span> <span class=n><span title=django.template.Library>Library</span></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L365 target=_blank>See source code</a></p> <p>A convenience method for registering the tag with the given library.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyNode</span><span class=p>(</span><span class=n>BaseNode</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>tag</span> <span class=o>=</span> <span class=s2>&quot;mynode&quot;</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=n>MyNode</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=n>library</span><span class=p>)</span>
</code></pre></div> <p>Allows you to then use the node in templates like so:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=cp>{%</span> <span class=k>load</span> <span class=nv>mylibrary</span> <span class=cp>%}</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=cp>{%</span> <span class=k>mynode</span> <span class=cp>%}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.BaseNode.render class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">render</span> <a href=#django_components.BaseNode.render class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>render</span><span class=p>(</span><span class=n>context</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.template.Context href=https://docs.djangoproject.com/en/5.0/_objects/ref/templates/api/#django.template.Context>Context</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L283 target=_blank>See source code</a></p> <p>Render the node. This method is meant to be overridden by subclasses.</p> <p>The signature of this function decides what input the template tag accepts.</p> <p>The <code>render()</code> method MUST accept a <code>context</code> argument. Any arguments after that will be part of the tag's input parameters.</p> <p>So if you define a <code>render</code> method like this:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>def</span><span class=w> </span><span class=nf>render</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>context</span><span class=p>:</span> <span class=n>Context</span><span class=p>,</span> <span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n>Any</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=nb>str</span><span class=p>:</span>
</code></pre></div> <p>Then the tag will require the <code>name</code> parameter, and accept any extra keyword arguments:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=nv>name</span><span class=o>=</span><span class=s2>&quot;John&quot;</span> <span class=nv>age</span><span class=o>=</span><span class=m>20</span> <span class=cp>%}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.BaseNode.unregister class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">unregister</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href=#django_components.BaseNode.unregister class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>unregister</span><span class=p>(</span><span class=n>library</span><span class=p>:</span> <span class=n><span title=django.template.Library>Library</span></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L386 target=_blank>See source code</a></p> <p>Unregisters the node from the given library.</p> </div> </div> </div> </div> </div> <div class="doc doc-object doc-attribute"> <h2 id=django_components.CommandLiteralAction class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">CommandLiteralAction</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small> </span> <a href=#django_components.CommandLiteralAction class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>CommandLiteralAction</span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-external" title=typing.Literal href=https://docs.python.org/3.12/library/typing.html#typing.Literal>Literal</a></span><span class=p>[</span><span class=s1>&#39;append&#39;</span><span class=p>,</span> <span class=s1>&#39;append_const&#39;</span><span class=p>,</span> <span class=s1>&#39;count&#39;</span><span class=p>,</span> <span class=s1>&#39;extend&#39;</span><span class=p>,</span> <span class=s1>&#39;store&#39;</span><span class=p>,</span> <span class=s1>&#39;store_const&#39;</span><span class=p>,</span> <span class=s1>&#39;store_true&#39;</span><span class=p>,</span> <span class=s1>&#39;store_false&#39;</span><span class=p>,</span> <span class=s1>&#39;version&#39;</span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/util/command.py#L21 target=_blank>See source code</a></p> <p>The basic type of action to be taken when this argument is encountered at the command line.</p> <p>This is a subset of the values for <code>action</code> in <a href=https://docs.python.org/3/library/argparse.html#the-add-argument-method><code>ArgumentParser.add_argument()</code></a>.</p> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.Component class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">Component</span> <a href=#django_components.Component class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>Component</span><span class=p>(</span><span class=n>registered_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span> <span class=n>outer_context</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.template.context.Context>Context</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span> <span class=n>registry</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentRegistry (django_components.component_registry.ComponentRegistry)" href=#django_components.ComponentRegistry>ComponentRegistry</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>)</span>
</code></pre></div> <div class="doc doc-contents first"> <p><span class=doc-section-title>Methods:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" as_view
classmethod
(django_components.Component.as_view)" href=#django_components.Component.as_view>as_view</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" get_context_data (django_components.Component.get_context_data)" href=#django_components.Component.get_context_data>get_context_data</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" get_template (django_components.Component.get_template)" href=#django_components.Component.get_template>get_template</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" get_template_name (django_components.Component.get_template_name)" href=#django_components.Component.get_template_name>get_template_name</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" inject (django_components.Component.inject)" href=#django_components.Component.inject>inject</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_render_after (django_components.Component.on_render_after)" href=#django_components.Component.on_render_after>on_render_after</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_render_before (django_components.Component.on_render_before)" href=#django_components.Component.on_render_before>on_render_before</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" render
classmethod
(django_components.Component.render)" href=#django_components.Component.render>render</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" render_to_response
classmethod
(django_components.Component.render_to_response)" href=#django_components.Component.render_to_response>render_to_response</a></code></b> <div class=doc-md-description> </div> </li> </ul> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" Defaults
instance-attribute
(django_components.Component.Defaults)" href=#django_components.Component.Defaults>Defaults</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<span title=django_components.extensions.defaults.ComponentDefaults>ComponentDefaults</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" Media
class-attribute
instance-attribute
(django_components.Component.Media)" href=#django_components.Component.Media>Media</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" ComponentMediaInput (django_components.component_media.ComponentMediaInput)" href=#django_components.ComponentMediaInput>ComponentMediaInput</a>]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" Url
instance-attribute
(django_components.Component.Url)" href=#django_components.Component.Url>Url</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" ComponentUrl (django_components.extensions.url.ComponentUrl)" href=#django_components.ComponentUrl>ComponentUrl</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" View
instance-attribute
(django_components.Component.View)" href=#django_components.Component.View>View</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" ComponentView (django_components.extensions.view.ComponentView)" href=#django_components.ComponentView>ComponentView</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" class_id
class-attribute
(django_components.Component.class_id)" href=#django_components.Component.class_id>class_id</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" context_processors_data
property
(django_components.Component.context_processors_data)" href=#django_components.Component.context_processors_data>context_processors_data</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" css
class-attribute
instance-attribute
(django_components.Component.css)" href=#django_components.Component.css>css</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" css_file
class-attribute
instance-attribute
(django_components.Component.css_file)" href=#django_components.Component.css_file>css_file</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" defaults
instance-attribute
(django_components.Component.defaults)" href=#django_components.Component.defaults>defaults</a></code></b> (<code><span title=django_components.extensions.defaults.ComponentDefaults>ComponentDefaults</span></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" id
property
(django_components.Component.id)" href=#django_components.Component.id>id</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" input
property
(django_components.Component.input)" href=#django_components.Component.input>input</a></code></b> (<code><span title=django_components.component.RenderInput>RenderInput</span>[<span title=django_components.component.ArgsType>ArgsType</span>, <span title=django_components.component.KwargsType>KwargsType</span>, <span title=django_components.component.SlotsType>SlotsType</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" is_filled
property
(django_components.Component.is_filled)" href=#django_components.Component.is_filled>is_filled</a></code></b> (<code><span title=django_components.slots.SlotIsFilled>SlotIsFilled</span></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" js
class-attribute
instance-attribute
(django_components.Component.js)" href=#django_components.Component.js>js</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" js_file
class-attribute
instance-attribute
(django_components.Component.js_file)" href=#django_components.Component.js_file>js_file</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" media
class-attribute
instance-attribute
(django_components.Component.media)" href=#django_components.Component.media>media</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<span title=django.forms.widgets.Media>Media</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" media_class
class-attribute
instance-attribute
(django_components.Component.media_class)" href=#django_components.Component.media_class>media_class</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<span title=django.forms.widgets.Media>Media</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" name
property
(django_components.Component.name)" href=#django_components.Component.name>name</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" outer_context
instance-attribute
(django_components.Component.outer_context)" href=#django_components.Component.outer_context>outer_context</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<span title=django.template.context.Context>Context</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" registered_name
instance-attribute
(django_components.Component.registered_name)" href=#django_components.Component.registered_name>registered_name</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" registry
instance-attribute
(django_components.Component.registry)" href=#django_components.Component.registry>registry</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" request
property
(django_components.Component.request)" href=#django_components.Component.request>request</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" response_class
class-attribute
instance-attribute
(django_components.Component.response_class)" href=#django_components.Component.response_class>response_class</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" template
class-attribute
instance-attribute
(django_components.Component.template)" href=#django_components.Component.template>template</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <span title=django.template.base.Template>Template</span>]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" template_file
class-attribute
instance-attribute
(django_components.Component.template_file)" href=#django_components.Component.template_file>template_file</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" template_name
instance-attribute
(django_components.Component.template_name)" href=#django_components.Component.template_name>template_name</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" url
instance-attribute
(django_components.Component.url)" href=#django_components.Component.url>url</a></code></b> (<code><a class="autorefs autorefs-internal" title=" ComponentUrl (django_components.extensions.url.ComponentUrl)" href=#django_components.ComponentUrl>ComponentUrl</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" view
instance-attribute
(django_components.Component.view)" href=#django_components.Component.view>view</a></code></b> (<code><a class="autorefs autorefs-internal" title=" ComponentView (django_components.extensions.view.ComponentView)" href=#django_components.ComponentView>ComponentView</a></code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.Defaults class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">Defaults</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.Defaults class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>Defaults</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><span title=django_components.extensions.defaults.ComponentDefaults>ComponentDefaults</span></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.Media class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">Media</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.Media class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>Media</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentMediaInput (django_components.component_media.ComponentMediaInput)" href=#django_components.ComponentMediaInput>ComponentMediaInput</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L545 target=_blank>See source code</a></p> <p>Defines JS and CSS media files associated with this component.</p> <p>This <code>Media</code> class behaves similarly to <a href=https://docs.djangoproject.com/en/5.1/topics/forms/media/#assets-as-a-static-definition>Django's Media class</a>:</p> <ul> <li>Paths are generally handled as static file paths, and resolved URLs are rendered to HTML with <code>media_class.render_js()</code> or <code>media_class.render_css()</code>.</li> <li>A path that starts with <code>http</code>, <code>https</code>, or <code>/</code> is considered a URL, skipping the static file resolution. This path is still rendered to HTML with <code>media_class.render_js()</code> or <code>media_class.render_css()</code>.</li> <li>A <code>SafeString</code> (with <code>__html__</code> method) is considered an already-formatted HTML tag, skipping both static file resolution and rendering with <code>media_class.render_js()</code> or <code>media_class.render_css()</code>.</li> <li>You can set <a href=../api#django_components.ComponentMediaInput.extend><code>extend</code></a> to configure whether to inherit JS / CSS from parent components. See <a href=../../concepts/fundamentals/defining_js_css_html_files/#controlling-media-inheritance>Controlling Media Inheritance</a>.</li> </ul> <p>However, there's a few differences from Django's Media class:</p> <ol> <li>Our Media class accepts various formats for the JS and CSS files: either a single file, a list, or (CSS-only) a dictionary (See <a href=../api#django_components.ComponentMediaInput><code>ComponentMediaInput</code></a>).</li> <li>Individual JS / CSS files can be any of <code>str</code>, <code>bytes</code>, <code>Path</code>, <a href=https://dev.to/doridoro/django-safestring-afj><code>SafeString</code></a>, or a function (See <a href=../api#django_components.ComponentMediaInputPath><code>ComponentMediaInputPath</code></a>).</li> </ol> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyTable</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>js</span> <span class=o>=</span> <span class=p>[</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=s2>&quot;path/to/script.js&quot;</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=s2>&quot;https://unpkg.com/alpinejs@3.14.7/dist/cdn.min.js&quot;</span><span class=p>,</span> <span class=c1># AlpineJS</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=p>]</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=n>css</span> <span class=o>=</span> <span class=p>{</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=s2>&quot;all&quot;</span><span class=p>:</span> <span class=p>[</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=s2>&quot;path/to/style.css&quot;</span><span class=p>,</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=s2>&quot;https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css&quot;</span><span class=p>,</span> <span class=c1># TailwindCSS</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a> <span class=p>],</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a> <span class=s2>&quot;print&quot;</span><span class=p>:</span> <span class=p>[</span><span class=s2>&quot;path/to/style2.css&quot;</span><span class=p>],</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a> <span class=p>}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.Url class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">Url</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.Url class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>Url</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentUrl (django_components.extensions.url.ComponentUrl)" href=#django_components.ComponentUrl>ComponentUrl</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.View class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">View</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.View class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>View</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentView (django_components.extensions.view.ComponentView)" href=#django_components.ComponentView>ComponentView</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.class_id class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">class_id</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> </span> <a href=#django_components.Component.class_id class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>class_id</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L634 target=_blank>See source code</a></p> <p>Unique ID of the component class, e.g. <code>MyComponent_ab01f2</code>.</p> <p>This is derived from the component class' module import path, e.g. <code>path.to.my.MyComponent</code>.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.context_processors_data class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">context_processors_data</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.Component.context_processors_data class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>context_processors_data</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L809 target=_blank>See source code</a></p> <p>Retrieve data injected by <a href=https://docs.djangoproject.com/en/5.1/ref/templates/api/#configuring-an-engine><code>context_processors</code></a>.</p> <p>This data is also available from within the component's template, without having to return this data from <a href=../api#django_components.Component.get_context_data><code>get_context_data()</code></a>.</p> <p>Unlike regular Django templates, the context processors are applied to components either when:</p> <ul> <li>The component is rendered with <code>RequestContext</code> (Regular Django behavior)</li> <li>The component is rendered with a regular <code>Context</code> (or none), but the <code>request</code> kwarg of <a href=../api#django_components.Component.render><code>Component.render()</code></a> is set.</li> <li>The component is nested in another component that matches one of the two conditions above.</li> </ul> <p>See <a href=../api#django_components.Component.request><code>Component.request</code></a> on how the <code>request</code> (<a href=https://docs.djangoproject.com/en/5.1/ref/request-response/#django.http.HttpRequest>HTTPRequest</a>) object is passed to and within the components.</p> <p>Raises <code>RuntimeError</code> if accessed outside of rendering execution.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>user</span> <span class=o>=</span> <span class=bp>self</span><span class=o>.</span><span class=n>context_processors_data</span><span class=p>[</span><span class=s1>&#39;user&#39;</span><span class=p>]</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>return</span> <span class=p>{</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=s1>&#39;is_logged_in&#39;</span><span class=p>:</span> <span class=n>user</span><span class=o>.</span><span class=n>is_authenticated</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=p>}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.css class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">css</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.css class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>css</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L437 target=_blank>See source code</a></p> <p>Main CSS associated with this component inlined as string.</p> <p>Only one of <a href=../api#django_components.Component.css><code>css</code></a> or <a href=../api#django_components.Component.css_file><code>css_file</code></a> must be defined.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>css</span> <span class=o>=</span> <span class=s2>&quot;&quot;&quot;</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=s2> .my-class {</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=s2> color: red;</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=s2> }</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=s2> &quot;&quot;&quot;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.css_file class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">css_file</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.css_file class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>css_file</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L456 target=_blank>See source code</a></p> <p>Main CSS associated with this component as file path.</p> <p>The filepath must be either:</p> <ul> <li>Relative to the directory where the Component's Python file is defined.</li> <li>Relative to one of the component directories, as set by <a href=../settings.md#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> or <a href=../settings.md#django_components.app_settings.ComponentsSettings.app_dirs><code>COMPONENTS.app_dirs</code></a> (e.g. <code>&lt;root&gt;/components/</code>).</li> <li>Relative to the staticfiles directories, as set by Django's <code>STATICFILES_DIRS</code> setting (e.g. <code>&lt;root&gt;/static/</code>).</li> </ul> <p>When you create a Component class with <code>css_file</code>, these will happen:</p> <ol> <li>If the file path is relative to the directory where the component's Python file is, the path is resolved.</li> <li>The file is read and its contents is set to <a href=../api#django_components.Component.css><code>Component.css</code></a>.</li> </ol> <p>Only one of <a href=../api#django_components.Component.css><code>css</code></a> or <a href=../api#django_components.Component.css_file><code>css_file</code></a> must be defined.</p> <p><strong>Example:</strong></p> <div class=highlight><span class=filename>path/to/style.css</span><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=p>.</span><span class=nc>my-class</span><span class=w> </span><span class=p>{</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=w> </span><span class=k>color</span><span class=p>:</span><span class=w> </span><span class=kc>red</span><span class=p>;</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>}</span>
</code></pre></div> <div class=highlight><span class=filename>path/to/component.py</span><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=n>css_file</span> <span class=o>=</span> <span class=s2>&quot;path/to/style.css&quot;</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=nb>print</span><span class=p>(</span><span class=n>MyComponent</span><span class=o>.</span><span class=n>css</span><span class=p>)</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=c1># Output:</span>
<a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a><span class=c1># .my-class {</span>
<a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a><span class=c1># color: red;</span>
<a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a><span class=c1># };</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.defaults class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">defaults</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.defaults class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>defaults</span><span class=p>:</span> <span class=n><span title=django_components.extensions.defaults.ComponentDefaults>ComponentDefaults</span></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.id class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">id</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.Component.id class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nb>id</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L696 target=_blank>See source code</a></p> <p>This ID is unique for every time a <a href=../api#django_components.Component.render><code>Component.render()</code></a> (or equivalent) is called (AKA "render ID").</p> <p>This is useful for logging or debugging.</p> <p>Raises <code>RuntimeError</code> if accessed outside of rendering execution.</p> <p>A single render ID has a chance of collision 1 in 3.3M. However, due to birthday paradox, the chance of collision increases when approaching ~1,000 render IDs.</p> <p><strong>Thus, there is a soft-cap of 1,000 components rendered on a single page.</strong></p> <p>If you need to more than that, please open an issue on GitHub.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=nb>print</span><span class=p>(</span><span class=sa>f</span><span class=s2>&quot;Rendering &#39;</span><span class=si>{</span><span class=bp>self</span><span class=o>.</span><span class=n>id</span><span class=si>}</span><span class=s2>&#39;&quot;</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>return</span> <span class=p>{}</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=n>MyComponent</span><span class=o>.</span><span class=n>render</span><span class=p>()</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=c1># Rendering &#39;ab3c4d&#39;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.input class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">input</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.Component.input class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nb>input</span><span class=p>:</span> <span class=n><span title=django_components.component.RenderInput>RenderInput</span></span><span class=p>[</span><span class=n><span title=django_components.component.ArgsType>ArgsType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.KwargsType>KwargsType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.SlotsType>SlotsType</span></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L733 target=_blank>See source code</a></p> <p>Input holds the data (like arg, kwargs, slots) that were passed to the current execution of the <code>render</code> method.</p> <p>Raises <code>RuntimeError</code> if accessed outside of rendering execution.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.is_filled class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">is_filled</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.Component.is_filled class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>is_filled</span><span class=p>:</span> <span class=n><span title=django_components.slots.SlotIsFilled>SlotIsFilled</span></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L748 target=_blank>See source code</a></p> <p>Dictionary describing which slots have or have not been filled.</p> <p>This attribute is available for use only within the template as <code>{{ component_vars.is_filled.slot_name }}</code>, and within <code>on_render_before</code> and <code>on_render_after</code> hooks.</p> <p>Raises <code>RuntimeError</code> if accessed outside of rendering execution.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.js class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">js</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.js class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>js</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L384 target=_blank>See source code</a></p> <p>Main JS associated with this component inlined as string.</p> <p>Only one of <a href=../api#django_components.Component.js><code>js</code></a> or <a href=../api#django_components.Component.js_file><code>js_file</code></a> must be defined.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>js</span> <span class=o>=</span> <span class=s2>&quot;console.log(&#39;Hello, World!&#39;);&quot;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.js_file class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">js_file</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.js_file class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>js_file</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L399 target=_blank>See source code</a></p> <p>Main JS associated with this component as file path.</p> <p>The filepath must be either:</p> <ul> <li>Relative to the directory where the Component's Python file is defined.</li> <li>Relative to one of the component directories, as set by <a href=../settings.md#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> or <a href=../settings.md#django_components.app_settings.ComponentsSettings.app_dirs><code>COMPONENTS.app_dirs</code></a> (e.g. <code>&lt;root&gt;/components/</code>).</li> <li>Relative to the staticfiles directories, as set by Django's <code>STATICFILES_DIRS</code> setting (e.g. <code>&lt;root&gt;/static/</code>).</li> </ul> <p>When you create a Component class with <code>js_file</code>, these will happen:</p> <ol> <li>If the file path is relative to the directory where the component's Python file is, the path is resolved.</li> <li>The file is read and its contents is set to <a href=../api#django_components.Component.js><code>Component.js</code></a>.</li> </ol> <p>Only one of <a href=../api#django_components.Component.js><code>js</code></a> or <a href=../api#django_components.Component.js_file><code>js_file</code></a> must be defined.</p> <p><strong>Example:</strong></p> <div class=highlight><span class=filename>path/to/script.js</span><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=s1>&#39;Hello, World!&#39;</span><span class=p>);</span>
</code></pre></div> <div class=highlight><span class=filename>path/to/component.py</span><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=n>js_file</span> <span class=o>=</span> <span class=s2>&quot;path/to/script.js&quot;</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=nb>print</span><span class=p>(</span><span class=n>MyComponent</span><span class=o>.</span><span class=n>js</span><span class=p>)</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=c1># Output: console.log(&#39;Hello, World!&#39;);</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.media class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">media</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.media class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>media</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.forms.widgets.Media>Media</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L499 target=_blank>See source code</a></p> <p>Normalized definition of JS and CSS media files associated with this component. <code>None</code> if <a href=../api#django_components.Component.Media><code>Component.Media</code></a> is not defined.</p> <p>This field is generated from <a href=../api#django_components.Component.media_class><code>Component.media_class</code></a>.</p> <p>Read more on <a href=../../concepts/fundamentals/defining_js_css_html_files/#accessing-components-media-files>Accessing component's HTML / JS / CSS</a>.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>js</span> <span class=o>=</span> <span class=s2>&quot;path/to/script.js&quot;</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>css</span> <span class=o>=</span> <span class=s2>&quot;path/to/style.css&quot;</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=nb>print</span><span class=p>(</span><span class=n>MyComponent</span><span class=o>.</span><span class=n>media</span><span class=p>)</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=c1># Output:</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># &lt;script src=&quot;/static/path/to/script.js&quot;&gt;&lt;/script&gt;</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=c1># &lt;link href=&quot;/static/path/to/style.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.media_class class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">media_class</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.media_class class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>media_class</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><span title=django.forms.widgets.Media>Media</span></span><span class=p>]</span> <span class=o>=</span> <span class=n><span title=django.forms.widgets.Media>Media</span></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L523 target=_blank>See source code</a></p> <p>Set the <a href=https://docs.djangoproject.com/en/5.1/topics/forms/media/#assets-as-a-static-definition>Media class</a> that will be instantiated with the JS and CSS media files from <a href=../api#django_components.Component.Media><code>Component.Media</code></a>.</p> <p>This is useful when you want to customize the behavior of the media files, like customizing how the JS or CSS files are rendered into <code>&lt;script&gt;</code> or <code>&lt;link&gt;</code> HTML tags. Read more in <a href=../../concepts/fundamentals/defining_js_css_html_files/#customize-how-paths-are-rendered-into-html-tags-with-media_class>Defining HTML / JS / CSS files</a>.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyTable</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>js</span> <span class=o>=</span> <span class=s2>&quot;path/to/script.js&quot;</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>css</span> <span class=o>=</span> <span class=s2>&quot;path/to/style.css&quot;</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>media_class</span> <span class=o>=</span> <span class=n>MyMediaClass</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.Component.name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.outer_context class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">outer_context</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.outer_context class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>outer_context</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.template.context.Context>Context</span></span><span class=p>]</span> <span class=o>=</span> <span class=n><span title=django_components.component.Component(outer_context)>outer_context</span></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.registered_name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">registered_name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.registered_name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>registered_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=n><span title=django_components.component.Component(registered_name)>registered_name</span></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.registry class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">registry</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.registry class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>registry</span> <span class=o>=</span> <span class=n><span title=django_components.component.Component(registry)>registry</span></span> <span class=ow>or</span> <span class=n><a class="autorefs autorefs-internal" title=" registry
module-attribute
(django_components.component_registry.registry)" href=#django_components.registry>registry</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.request class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">request</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.Component.request class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L772 target=_blank>See source code</a></p> <p><a href=https://docs.djangoproject.com/en/5.1/ref/request-response/#django.http.HttpRequest>HTTPRequest</a> object passed to this component.</p> <p>In regular Django templates, you have to use <a href=https://docs.djangoproject.com/en/5.1/ref/templates/api/#django.template.RequestContext><code>RequestContext</code></a> to pass the <code>HttpRequest</code> object to the template.</p> <p>But in Components, you can either use <code>RequestContext</code>, or pass the <code>request</code> object explicitly via <a href=../api#django_components.Component.render><code>Component.render()</code></a> and <a href=../api#django_components.Component.render_to_response><code>Component.render_to_response()</code></a>.</p> <p>When a component is nested in another, the child component uses parent's <code>request</code> object.</p> <p>Raises <code>RuntimeError</code> if accessed outside of rendering execution.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>user_id</span> <span class=o>=</span> <span class=bp>self</span><span class=o>.</span><span class=n>request</span><span class=o>.</span><span class=n>GET</span><span class=p>[</span><span class=s1>&#39;user_id&#39;</span><span class=p>]</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>return</span> <span class=p>{</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=s1>&#39;user_id&#39;</span><span class=p>:</span> <span class=n>user_id</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=p>}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.response_class class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">response_class</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.response_class class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>response_class</span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L589 target=_blank>See source code</a></p> <p>This allows to configure what class is used to generate response from <code>render_to_response</code></p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.template class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">template</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.template class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>template</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><span title=django.template.base.Template>Template</span></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L350 target=_blank>See source code</a></p> <p>Inlined Django template associated with this component. Can be a plain string or a Template instance.</p> <p>Only one of <a href=../api#django_components.Component.template_file><code>template_file</code></a>, <a href=../api#django_components.Component.get_template_name><code>get_template_name</code></a>, <a href=../api#django_components.Component.template><code>template</code></a> or <a href=../api#django_components.Component.get_template><code>get_template</code></a> must be defined.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>template</span> <span class=o>=</span> <span class=s2>&quot;Hello, {{ name }}!&quot;</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=k>return</span> <span class=p>{</span><span class=s2>&quot;name&quot;</span><span class=p>:</span> <span class=s2>&quot;World&quot;</span><span class=p>}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.template_file class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">template_file</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.template_file class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>template_file</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L292 target=_blank>See source code</a></p> <p>Filepath to the Django template associated with this component.</p> <p>The filepath must be either:</p> <ul> <li>Relative to the directory where the Component's Python file is defined.</li> <li>Relative to one of the component directories, as set by <a href=../settings.md#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> or <a href=../settings.md#django_components.app_settings.ComponentsSettings.app_dirs><code>COMPONENTS.app_dirs</code></a> (e.g. <code>&lt;root&gt;/components/</code>).</li> <li>Relative to the template directories, as set by Django's <code>TEMPLATES</code> setting (e.g. <code>&lt;root&gt;/templates/</code>).</li> </ul> <p>Only one of <a href=../api#django_components.Component.template_file><code>template_file</code></a>, <a href=../api#django_components.Component.get_template_name><code>get_template_name</code></a>, <a href=../api#django_components.Component.template><code>template</code></a> or <a href=../api#django_components.Component.get_template><code>get_template</code></a> must be defined.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>template_file</span> <span class=o>=</span> <span class=s2>&quot;path/to/template.html&quot;</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=k>return</span> <span class=p>{</span><span class=s2>&quot;name&quot;</span><span class=p>:</span> <span class=s2>&quot;World&quot;</span><span class=p>}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.template_name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">template_name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.template_name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>template_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L324 target=_blank>See source code</a></p> <p>Alias for <a href=../api#django_components.Component.template_file><code>template_file</code></a>.</p> <p>For historical reasons, django-components used <code>template_name</code> to align with Django's <a href=https://docs.djangoproject.com/en/5.1/ref/class-based-views/base/#django.views.generic.base.TemplateView>TemplateView</a>.</p> <p><code>template_file</code> was introduced to align with <code>js/js_file</code> and <code>css/css_file</code>.</p> <p>Setting and accessing this attribute is proxied to <code>template_file</code>.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.url class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">url</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.url class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>url</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" ComponentUrl (django_components.extensions.url.ComponentUrl)" href=#django_components.ComponentUrl>ComponentUrl</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Component.view class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">view</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Component.view class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>view</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" ComponentView (django_components.extensions.view.ComponentView)" href=#django_components.ComponentView>ComponentView</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.as_view class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">as_view</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href=#django_components.Component.as_view class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>as_view</span><span class=p>(</span><span class=o>**</span><span class=n>initkwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><span title=django_components.extensions.view.ViewFn>ViewFn</span></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L966 target=_blank>See source code</a></p> <p>Shortcut for calling <code>Component.View.as_view</code> and passing component instance to it.</p> <p>Read more on <a href=../../concepts/fundamentals/component_views_urls>Component views and URLs</a>.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.get_context_data class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">get_context_data</span> <a href=#django_components.Component.get_context_data class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get_context_data</span><span class=p>(</span><span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><span title=django_components.component.DataType>DataType</span></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.get_template class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">get_template</span> <a href=#django_components.Component.get_template class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get_template</span><span class=p>(</span><span class=n>context</span><span class=p>:</span> <span class=n><span title=django.template.context.Context>Context</span></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><span title=django.template.base.Template>Template</span></span><span class=p>]]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L370 target=_blank>See source code</a></p> <p>Inlined Django template associated with this component. Can be a plain string or a Template instance.</p> <p>Only one of <a href=../api#django_components.Component.template_file><code>template_file</code></a>, <a href=../api#django_components.Component.get_template_name><code>get_template_name</code></a>, <a href=../api#django_components.Component.template><code>template</code></a> or <a href=../api#django_components.Component.get_template><code>get_template</code></a> must be defined.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.get_template_name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">get_template_name</span> <a href=#django_components.Component.get_template_name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get_template_name</span><span class=p>(</span><span class=n>context</span><span class=p>:</span> <span class=n><span title=django.template.context.Context>Context</span></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L336 target=_blank>See source code</a></p> <p>Filepath to the Django template associated with this component.</p> <p>The filepath must be relative to either the file where the component class was defined, or one of the roots of <code>STATIFILES_DIRS</code>.</p> <p>Only one of <a href=../api#django_components.Component.template_file><code>template_file</code></a>, <a href=../api#django_components.Component.get_template_name><code>get_template_name</code></a>, <a href=../api#django_components.Component.template><code>template</code></a> or <a href=../api#django_components.Component.get_template><code>get_template</code></a> must be defined.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.inject class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">inject</span> <a href=#django_components.Component.inject class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>inject</span><span class=p>(</span><span class=n>key</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n>default</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L916 target=_blank>See source code</a></p> <p>Use this method to retrieve the data that was passed to a <code>{% provide %}</code> tag with the corresponding key.</p> <p>To retrieve the data, <code>inject()</code> must be called inside a component that's inside the <code>{% provide %}</code> tag.</p> <p>You may also pass a default that will be used if the <code>provide</code> tag with given key was NOT found.</p> <p>This method mut be used inside the <code>get_context_data()</code> method and raises an error if called elsewhere.</p> <p>Example:</p> <p>Given this template: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>provide</span> <span class=s2>&quot;provider&quot;</span> <span class=nv>hello</span><span class=o>=</span><span class=s2>&quot;world&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=x> </span><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_comp&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=x> </span><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=cp>{%</span> <span class=k>endprovide</span> <span class=cp>%}</span>
</code></pre></div></p> <p>And given this definition of "my_comp" component: <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>register</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=nd>@register</span><span class=p>(</span><span class=s2>&quot;my_comp&quot;</span><span class=p>)</span>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=k>class</span><span class=w> </span><span class=nc>MyComp</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a> <span class=n>template</span> <span class=o>=</span> <span class=s2>&quot;hi {{ data.hello }}!&quot;</span>
<a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a> <span class=n>data</span> <span class=o>=</span> <span class=bp>self</span><span class=o>.</span><span class=n>inject</span><span class=p>(</span><span class=s2>&quot;provider&quot;</span><span class=p>)</span>
<a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a> <span class=k>return</span> <span class=p>{</span><span class=s2>&quot;data&quot;</span><span class=p>:</span> <span class=n>data</span><span class=p>}</span>
</code></pre></div></p> <p>This renders into: <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a>hi world!
</code></pre></div></p> <p>As the <code>{{ data.hello }}</code> is taken from the "provider".</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.on_render_after class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_render_after</span> <a href=#django_components.Component.on_render_after class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_render_after</span><span class=p>(</span><span class=n>context</span><span class=p>:</span> <span class=n><span title=django.template.context.Context>Context</span></span><span class=p>,</span> <span class=n>template</span><span class=p>:</span> <span class=n><span title=django.template.base.Template>Template</span></span><span class=p>,</span> <span class=n>content</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" SlotResult
module-attribute
(django_components.slots.SlotResult)" href=#django_components.SlotResult>SlotResult</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L604 target=_blank>See source code</a></p> <p>Hook that runs just after the component's template was rendered. It receives the rendered output as the last argument.</p> <p>You can use this hook to access the context or the template, but modifying them won't have any effect.</p> <p>To override the content that gets rendered, you can return a string or SafeString from this hook.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.on_render_before class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_render_before</span> <a href=#django_components.Component.on_render_before class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_render_before</span><span class=p>(</span><span class=n>context</span><span class=p>:</span> <span class=n><span title=django.template.context.Context>Context</span></span><span class=p>,</span> <span class=n>template</span><span class=p>:</span> <span class=n><span title=django.template.base.Template>Template</span></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L596 target=_blank>See source code</a></p> <p>Hook that runs just before the component's template is rendered.</p> <p>You can use this hook to access or modify the context or the template.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.render class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">render</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href=#django_components.Component.render class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>render</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>context</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>],</span> <span class=n><span title=django.template.context.Context>Context</span></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.component.ArgsType>ArgsType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.component.KwargsType>KwargsType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>slots</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.component.SlotsType>SlotsType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>escape_slots_content</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span> <span class=o>=</span> <span class=kc>True</span><span class=p>,</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=nb>type</span><span class=p>:</span> <span class=n><span title=django_components.dependencies.RenderType>RenderType</span></span> <span class=o>=</span> <span class=s2>&quot;document&quot;</span><span class=p>,</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=n>render_dependencies</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span> <span class=o>=</span> <span class=kc>True</span><span class=p>,</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L1072 target=_blank>See source code</a></p> <p>Render the component into a string.</p> <p>Inputs: - <code>args</code> - Positional args for the component. This is the same as calling the component as <code>{% component "my_comp" arg1 arg2 ... %}</code> - <code>kwargs</code> - Kwargs for the component. This is the same as calling the component as <code>{% component "my_comp" key1=val1 key2=val2 ... %}</code> - <code>slots</code> - Component slot fills. This is the same as pasing <code>{% fill %}</code> tags to the component. Accepts a dictionary of <code>{ slot_name: slot_content }</code> where <code>slot_content</code> can be a string or render function. - <code>escape_slots_content</code> - Whether the content from <code>slots</code> should be escaped. - <code>context</code> - A context (dictionary or Django's Context) within which the component is rendered. The keys on the context can be accessed from within the template. - NOTE: In "isolated" mode, context is NOT accessible, and data MUST be passed via component's args and kwargs. - <code>type</code> - Configure how to handle JS and CSS dependencies. - <code>"document"</code> (default) - JS dependencies are inserted into <code>{% component_js_dependencies %}</code>, or to the end of the <code>&lt;body&gt;</code> tag. CSS dependencies are inserted into <code>{% component_css_dependencies %}</code>, or the end of the <code>&lt;head&gt;</code> tag. - <code>"fragment"</code> - <code>{% component_js_dependencies %}</code> and <code>{% component_css_dependencies %}</code>, are ignored, and a script that loads the JS and CSS dependencies is appended to the HTML. - <code>render_dependencies</code> - Set this to <code>False</code> if you want to insert the resulting HTML into another component. - <code>request</code> - The request object. This is only required when needing to use RequestContext, e.g. to enable template <code>context_processors</code>. Example: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>MyComponent</span><span class=o>.</span><span class=n>render</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>args</span><span class=o>=</span><span class=p>[</span><span class=mi>1</span><span class=p>,</span> <span class=s2>&quot;two&quot;</span><span class=p>,</span> <span class=p>{}],</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>kwargs</span><span class=o>=</span><span class=p>{</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=s2>&quot;key&quot;</span><span class=p>:</span> <span class=mi>123</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=p>},</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>slots</span><span class=o>=</span><span class=p>{</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=s2>&quot;header&quot;</span><span class=p>:</span> <span class=s1>&#39;STATIC TEXT HERE&#39;</span><span class=p>,</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=s2>&quot;footer&quot;</span><span class=p>:</span> <span class=k>lambda</span> <span class=n>ctx</span><span class=p>,</span> <span class=n>slot_kwargs</span><span class=p>,</span> <span class=n>slot_ref</span><span class=p>:</span> <span class=sa>f</span><span class=s1>&#39;CTX: </span><span class=si>{</span><span class=n>ctx</span><span class=p>[</span><span class=s1>&#39;hello&#39;</span><span class=p>]</span><span class=si>}</span><span class=s1> SLOT_DATA: </span><span class=si>{</span><span class=n>slot_kwargs</span><span class=p>[</span><span class=s1>&#39;abc&#39;</span><span class=p>]</span><span class=si>}</span><span class=s1>&#39;</span><span class=p>,</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=p>},</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=n>escape_slots_content</span><span class=o>=</span><span class=kc>False</span><span class=p>,</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=p>)</span>
</code></pre></div></p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.Component.render_to_response class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">render_to_response</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href=#django_components.Component.render_to_response class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>render_to_response</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>context</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>],</span> <span class=n><span title=django.template.context.Context>Context</span></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>slots</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.component.SlotsType>SlotsType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>escape_slots_content</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span> <span class=o>=</span> <span class=kc>True</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.component.ArgsType>ArgsType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.component.KwargsType>KwargsType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=nb>type</span><span class=p>:</span> <span class=n><span title=django_components.dependencies.RenderType>RenderType</span></span> <span class=o>=</span> <span class=s2>&quot;document&quot;</span><span class=p>,</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=o>*</span><span class=n>response_args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=o>**</span><span class=n>response_kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L996 target=_blank>See source code</a></p> <p>Render the component and wrap the content in the response class.</p> <p>The response class is taken from <code>Component.response_class</code>. Defaults to <code>django.http.HttpResponse</code>.</p> <p>This is the interface for the <code>django.views.View</code> class which allows us to use components as Django views with <code>component.as_view()</code>.</p> <p>Inputs: - <code>args</code> - Positional args for the component. This is the same as calling the component as <code>{% component "my_comp" arg1 arg2 ... %}</code> - <code>kwargs</code> - Kwargs for the component. This is the same as calling the component as <code>{% component "my_comp" key1=val1 key2=val2 ... %}</code> - <code>slots</code> - Component slot fills. This is the same as pasing <code>{% fill %}</code> tags to the component. Accepts a dictionary of <code>{ slot_name: slot_content }</code> where <code>slot_content</code> can be a string or render function. - <code>escape_slots_content</code> - Whether the content from <code>slots</code> should be escaped. - <code>context</code> - A context (dictionary or Django's Context) within which the component is rendered. The keys on the context can be accessed from within the template. - NOTE: In "isolated" mode, context is NOT accessible, and data MUST be passed via component's args and kwargs. - <code>type</code> - Configure how to handle JS and CSS dependencies. - <code>"document"</code> (default) - JS dependencies are inserted into <code>{% component_js_dependencies %}</code>, or to the end of the <code>&lt;body&gt;</code> tag. CSS dependencies are inserted into <code>{% component_css_dependencies %}</code>, or the end of the <code>&lt;head&gt;</code> tag. - <code>"fragment"</code> - <code>{% component_js_dependencies %}</code> and <code>{% component_css_dependencies %}</code>, are ignored, and a script that loads the JS and CSS dependencies is appended to the HTML. - <code>request</code> - The request object. This is only required when needing to use RequestContext, e.g. to enable template <code>context_processors</code>.</p> <p>Any additional args and kwargs are passed to the <code>response_class</code>.</p> <p>Example: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>MyComponent</span><span class=o>.</span><span class=n>render_to_response</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>args</span><span class=o>=</span><span class=p>[</span><span class=mi>1</span><span class=p>,</span> <span class=s2>&quot;two&quot;</span><span class=p>,</span> <span class=p>{}],</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>kwargs</span><span class=o>=</span><span class=p>{</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=s2>&quot;key&quot;</span><span class=p>:</span> <span class=mi>123</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=p>},</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>slots</span><span class=o>=</span><span class=p>{</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=s2>&quot;header&quot;</span><span class=p>:</span> <span class=s1>&#39;STATIC TEXT HERE&#39;</span><span class=p>,</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=s2>&quot;footer&quot;</span><span class=p>:</span> <span class=k>lambda</span> <span class=n>ctx</span><span class=p>,</span> <span class=n>slot_kwargs</span><span class=p>,</span> <span class=n>slot_ref</span><span class=p>:</span> <span class=sa>f</span><span class=s1>&#39;CTX: </span><span class=si>{</span><span class=n>ctx</span><span class=p>[</span><span class=s1>&#39;hello&#39;</span><span class=p>]</span><span class=si>}</span><span class=s1> SLOT_DATA: </span><span class=si>{</span><span class=n>slot_kwargs</span><span class=p>[</span><span class=s1>&#39;abc&#39;</span><span class=p>]</span><span class=si>}</span><span class=s1>&#39;</span><span class=p>,</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=p>},</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=n>escape_slots_content</span><span class=o>=</span><span class=kc>False</span><span class=p>,</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a> <span class=c1># HttpResponse input</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a> <span class=n>status</span><span class=o>=</span><span class=mi>201</span><span class=p>,</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a> <span class=n>headers</span><span class=o>=</span><span class=p>{</span><span class=o>...</span><span class=p>},</span>
<a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=p>)</span>
<a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=c1># HttpResponse(content=..., status=201, headers=...)</span>
</code></pre></div></p> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ComponentExtension class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentExtension</span> <a href=#django_components.ComponentExtension class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>object</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L132 target=_blank>See source code</a></p> <p>Base class for all extensions.</p> <p>Read more on <a href=../../concepts/advanced/extensions>Extensions</a>.</p> <p><span class=doc-section-title>Methods:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_component_class_created (django_components.ComponentExtension.on_component_class_created)" href=#django_components.ComponentExtension.on_component_class_created>on_component_class_created</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_component_class_deleted (django_components.ComponentExtension.on_component_class_deleted)" href=#django_components.ComponentExtension.on_component_class_deleted>on_component_class_deleted</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_component_data (django_components.ComponentExtension.on_component_data)" href=#django_components.ComponentExtension.on_component_data>on_component_data</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_component_input (django_components.ComponentExtension.on_component_input)" href=#django_components.ComponentExtension.on_component_input>on_component_input</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_component_registered (django_components.ComponentExtension.on_component_registered)" href=#django_components.ComponentExtension.on_component_registered>on_component_registered</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_component_unregistered (django_components.ComponentExtension.on_component_unregistered)" href=#django_components.ComponentExtension.on_component_unregistered>on_component_unregistered</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_registry_created (django_components.ComponentExtension.on_registry_created)" href=#django_components.ComponentExtension.on_registry_created>on_registry_created</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" on_registry_deleted (django_components.ComponentExtension.on_registry_deleted)" href=#django_components.ComponentExtension.on_registry_deleted>on_registry_deleted</a></code></b> <div class=doc-md-description> </div> </li> </ul> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" ExtensionClass
class-attribute
instance-attribute
(django_components.ComponentExtension.ExtensionClass)" href=#django_components.ComponentExtension.ExtensionClass>ExtensionClass</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" class_name
instance-attribute
(django_components.ComponentExtension.class_name)" href=#django_components.ComponentExtension.class_name>class_name</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" commands
class-attribute
instance-attribute
(django_components.ComponentExtension.commands)" href=#django_components.ComponentExtension.commands>commands</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" ComponentCommand (django_components.util.command.ComponentCommand)" href=../extension_commands/#django_components.ComponentCommand>ComponentCommand</a>]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" name
instance-attribute
(django_components.ComponentExtension.name)" href=#django_components.ComponentExtension.name>name</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" urls
class-attribute
instance-attribute
(django_components.ComponentExtension.urls)" href=#django_components.ComponentExtension.urls>urls</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-internal" title=" URLRoute
dataclass
(django_components.util.routing.URLRoute)" href=../extension_urls/#django_components.URLRoute>URLRoute</a>]</code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentExtension.ExtensionClass class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">ExtensionClass</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentExtension.ExtensionClass class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>ExtensionClass</span> <span class=o>=</span> <span class=n><span title=django_components.extension.BaseExtensionClass>BaseExtensionClass</span></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L185 target=_blank>See source code</a></p> <p>Base class that the "extension class" nested within a <a href=../api#django_components.Component><code>Component</code></a> class will inherit from.</p> <p>This is where you can define new methods and attributes that will be available to the component instance.</p> <p>Background:</p> <p>The extension may add new features to the <code>Component</code> class by allowing users to define and access a nested class in the <code>Component</code> class. E.g.:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComp</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=o>...</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=k>return</span> <span class=p>{</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=s2>&quot;my_extension&quot;</span><span class=p>:</span> <span class=bp>self</span><span class=o>.</span><span class=n>my_extension</span><span class=o>.</span><span class=n>do_something</span><span class=p>(),</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=p>}</span>
</code></pre></div> <p>When rendering a component, the nested extension class will be set as a subclass of <code>ExtensionClass</code>. So it will be same as if the user had directly inherited from <code>ExtensionClass</code>. E.g.:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComp</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=o>.</span><span class=n>ExtensionClass</span><span class=p>):</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a> <span class=o>...</span>
</code></pre></div> <p>This setting decides what the extension class will inherit from.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentExtension.class_name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">class_name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentExtension.class_name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>class_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L170 target=_blank>See source code</a></p> <p>Name of the extension class.</p> <p>By default, this is the same as <code>name</code>, but with snake_case converted to PascalCase.</p> <p>So if the extension name is <code>"my_extension"</code>, then the extension class name will be <code>"MyExtension"</code>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComp</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>:</span> <span class=c1># &lt;--- This is the extension class</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=o>...</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentExtension.commands class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">commands</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentExtension.commands class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>commands</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentCommand (django_components.util.command.ComponentCommand)" href=../extension_commands/#django_components.ComponentCommand>ComponentCommand</a></span><span class=p>]]</span> <span class=o>=</span> <span class=p>[]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L221 target=_blank>See source code</a></p> <p>List of commands that can be run by the extension.</p> <p>These commands will be available to the user as <code>components ext run &lt;extension&gt; &lt;command&gt;</code>.</p> <p>Commands are defined as subclasses of <a href=../extension_commands#django_components.ComponentCommand><code>ComponentCommand</code></a>.</p> <p><strong>Example:</strong></p> <p>This example defines an extension with a command that prints "Hello world". To run the command, the user would run <code>components ext run hello_world hello</code>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentCommand</span><span class=p>,</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>CommandArg</span><span class=p>,</span> <span class=n>CommandArgGroup</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>HelloWorldCommand</span><span class=p>(</span><span class=n>ComponentCommand</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>name</span> <span class=o>=</span> <span class=s2>&quot;hello&quot;</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>help</span> <span class=o>=</span> <span class=s2>&quot;Hello world command.&quot;</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=c1># Allow to pass flags `--foo`, `--bar` and `--baz`.</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=c1># Argument parsing is managed by `argparse`.</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=n>arguments</span> <span class=o>=</span> <span class=p>[</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=n>CommandArg</span><span class=p>(</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a> <span class=n>name_or_flags</span><span class=o>=</span><span class=s2>&quot;--foo&quot;</span><span class=p>,</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a> <span class=n>help</span><span class=o>=</span><span class=s2>&quot;Foo description.&quot;</span><span class=p>,</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a> <span class=p>),</span>
<a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a> <span class=c1># When printing the command help message, `bar` and `baz`</span>
<a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a> <span class=c1># will be grouped under &quot;group bar&quot;.</span>
<a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a> <span class=n>CommandArgGroup</span><span class=p>(</span>
<a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a> <span class=n>title</span><span class=o>=</span><span class=s2>&quot;group bar&quot;</span><span class=p>,</span>
<a id=__codelineno-0-18 name=__codelineno-0-18 href=#__codelineno-0-18></a> <span class=n>description</span><span class=o>=</span><span class=s2>&quot;Group description.&quot;</span><span class=p>,</span>
<a id=__codelineno-0-19 name=__codelineno-0-19 href=#__codelineno-0-19></a> <span class=n>arguments</span><span class=o>=</span><span class=p>[</span>
<a id=__codelineno-0-20 name=__codelineno-0-20 href=#__codelineno-0-20></a> <span class=n>CommandArg</span><span class=p>(</span>
<a id=__codelineno-0-21 name=__codelineno-0-21 href=#__codelineno-0-21></a> <span class=n>name_or_flags</span><span class=o>=</span><span class=s2>&quot;--bar&quot;</span><span class=p>,</span>
<a id=__codelineno-0-22 name=__codelineno-0-22 href=#__codelineno-0-22></a> <span class=n>help</span><span class=o>=</span><span class=s2>&quot;Bar description.&quot;</span><span class=p>,</span>
<a id=__codelineno-0-23 name=__codelineno-0-23 href=#__codelineno-0-23></a> <span class=p>),</span>
<a id=__codelineno-0-24 name=__codelineno-0-24 href=#__codelineno-0-24></a> <span class=n>CommandArg</span><span class=p>(</span>
<a id=__codelineno-0-25 name=__codelineno-0-25 href=#__codelineno-0-25></a> <span class=n>name_or_flags</span><span class=o>=</span><span class=s2>&quot;--baz&quot;</span><span class=p>,</span>
<a id=__codelineno-0-26 name=__codelineno-0-26 href=#__codelineno-0-26></a> <span class=n>help</span><span class=o>=</span><span class=s2>&quot;Baz description.&quot;</span><span class=p>,</span>
<a id=__codelineno-0-27 name=__codelineno-0-27 href=#__codelineno-0-27></a> <span class=p>),</span>
<a id=__codelineno-0-28 name=__codelineno-0-28 href=#__codelineno-0-28></a> <span class=p>],</span>
<a id=__codelineno-0-29 name=__codelineno-0-29 href=#__codelineno-0-29></a> <span class=p>),</span>
<a id=__codelineno-0-30 name=__codelineno-0-30 href=#__codelineno-0-30></a> <span class=p>]</span>
<a id=__codelineno-0-31 name=__codelineno-0-31 href=#__codelineno-0-31></a>
<a id=__codelineno-0-32 name=__codelineno-0-32 href=#__codelineno-0-32></a> <span class=c1># Callback that receives the parsed arguments and options.</span>
<a id=__codelineno-0-33 name=__codelineno-0-33 href=#__codelineno-0-33></a> <span class=k>def</span><span class=w> </span><span class=nf>handle</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>):</span>
<a id=__codelineno-0-34 name=__codelineno-0-34 href=#__codelineno-0-34></a> <span class=nb>print</span><span class=p>(</span><span class=sa>f</span><span class=s2>&quot;HelloWorldCommand.handle: args=</span><span class=si>{</span><span class=n>args</span><span class=si>}</span><span class=s2>, kwargs=</span><span class=si>{</span><span class=n>kwargs</span><span class=si>}</span><span class=s2>&quot;</span><span class=p>)</span>
<a id=__codelineno-0-35 name=__codelineno-0-35 href=#__codelineno-0-35></a>
<a id=__codelineno-0-36 name=__codelineno-0-36 href=#__codelineno-0-36></a><span class=c1># Associate the command with the extension</span>
<a id=__codelineno-0-37 name=__codelineno-0-37 href=#__codelineno-0-37></a><span class=k>class</span><span class=w> </span><span class=nc>HelloWorldExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-38 name=__codelineno-0-38 href=#__codelineno-0-38></a> <span class=n>name</span> <span class=o>=</span> <span class=s2>&quot;hello_world&quot;</span>
<a id=__codelineno-0-39 name=__codelineno-0-39 href=#__codelineno-0-39></a>
<a id=__codelineno-0-40 name=__codelineno-0-40 href=#__codelineno-0-40></a> <span class=n>commands</span> <span class=o>=</span> <span class=p>[</span>
<a id=__codelineno-0-41 name=__codelineno-0-41 href=#__codelineno-0-41></a> <span class=n>HelloWorldCommand</span><span class=p>,</span>
<a id=__codelineno-0-42 name=__codelineno-0-42 href=#__codelineno-0-42></a> <span class=p>]</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentExtension.name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentExtension.name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L143 target=_blank>See source code</a></p> <p>Name of the extension.</p> <p>Name must be lowercase, and must be a valid Python identifier (e.g. <code>"my_extension"</code>).</p> <p>The extension may add new features to the <a href=../api#django_components.Component><code>Component</code></a> class by allowing users to define and access a nested class in the <code>Component</code> class.</p> <p>The extension name determines the name of the nested class in the <code>Component</code> class, and the attribute under which the extension will be accessible.</p> <p>E.g. if the extension name is <code>"my_extension"</code>, then the nested class in the <code>Component</code> class will be <code>MyExtension</code>, and the extension will be accessible as <code>MyComp.my_extension</code>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComp</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=o>...</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=k>return</span> <span class=p>{</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=s2>&quot;my_extension&quot;</span><span class=p>:</span> <span class=bp>self</span><span class=o>.</span><span class=n>my_extension</span><span class=o>.</span><span class=n>do_something</span><span class=p>(),</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=p>}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentExtension.urls class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">urls</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentExtension.urls class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>urls</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" URLRoute
dataclass
(django_components.util.routing.URLRoute)" href=../extension_urls/#django_components.URLRoute>URLRoute</a></span><span class=p>]</span> <span class=o>=</span> <span class=p>[]</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentExtension.on_component_class_created class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_component_class_created</span> <a href=#django_components.ComponentExtension.on_component_class_created class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_component_class_created</span><span class=p>(</span><span class=n>ctx</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" OnComponentClassCreatedContext (django_components.extension.OnComponentClassCreatedContext)" href=../extension_hooks/#django_components.extension.OnComponentClassCreatedContext>OnComponentClassCreatedContext</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L300 target=_blank>See source code</a></p> <p>Called when a new <a href=../api#django_components.Component><code>Component</code></a> class is created.</p> <p>This hook is called after the <a href=../api#django_components.Component><code>Component</code></a> class is fully defined but before it's registered.</p> <p>Use this hook to perform any initialization or validation of the <a href=../api#django_components.Component><code>Component</code></a> class.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>OnComponentClassCreatedContext</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>on_component_class_created</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>ctx</span><span class=p>:</span> <span class=n>OnComponentClassCreatedContext</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=c1># Add a new attribute to the Component class</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>ctx</span><span class=o>.</span><span class=n>component_cls</span><span class=o>.</span><span class=n>my_attr</span> <span class=o>=</span> <span class=s2>&quot;my_value&quot;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentExtension.on_component_class_deleted class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_component_class_deleted</span> <a href=#django_components.ComponentExtension.on_component_class_deleted class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_component_class_deleted</span><span class=p>(</span><span class=n>ctx</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" OnComponentClassDeletedContext (django_components.extension.OnComponentClassDeletedContext)" href=../extension_hooks/#django_components.extension.OnComponentClassDeletedContext>OnComponentClassDeletedContext</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L323 target=_blank>See source code</a></p> <p>Called when a <a href=../api#django_components.Component><code>Component</code></a> class is being deleted.</p> <p>This hook is called before the <a href=../api#django_components.Component><code>Component</code></a> class is deleted from memory.</p> <p>Use this hook to perform any cleanup related to the <a href=../api#django_components.Component><code>Component</code></a> class.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>OnComponentClassDeletedContext</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>on_component_class_deleted</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>ctx</span><span class=p>:</span> <span class=n>OnComponentClassDeletedContext</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=c1># Remove Component class from the extension&#39;s cache on deletion</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=bp>self</span><span class=o>.</span><span class=n>cache</span><span class=o>.</span><span class=n>pop</span><span class=p>(</span><span class=n>ctx</span><span class=o>.</span><span class=n>component_cls</span><span class=p>,</span> <span class=kc>None</span><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentExtension.on_component_data class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_component_data</span> <a href=#django_components.ComponentExtension.on_component_data class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_component_data</span><span class=p>(</span><span class=n>ctx</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" OnComponentDataContext (django_components.extension.OnComponentDataContext)" href=../extension_hooks/#django_components.extension.OnComponentDataContext>OnComponentDataContext</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L458 target=_blank>See source code</a></p> <p>Called when a Component was triggered to render, after a component's context and data methods have been processed.</p> <p>This hook is called after <a href=../api#django_components.Component.get_context_data><code>Component.get_context_data()</code></a>, <a href=../api#django_components.Component.get_js_data><code>Component.get_js_data()</code></a> and <a href=../api#django_components.Component.get_css_data><code>Component.get_css_data()</code></a>.</p> <p>This hook runs after <a href=../api#django_components.ComponentExtension.on_component_input><code>on_component_input</code></a>.</p> <p>Use this hook to modify or validate the component's data before rendering.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>OnComponentDataContext</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>on_component_data</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>ctx</span><span class=p>:</span> <span class=n>OnComponentDataContext</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=c1># Add extra template variable to all components when they are rendered</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>ctx</span><span class=o>.</span><span class=n>context_data</span><span class=p>[</span><span class=s2>&quot;my_template_var&quot;</span><span class=p>]</span> <span class=o>=</span> <span class=s2>&quot;my_value&quot;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentExtension.on_component_input class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_component_input</span> <a href=#django_components.ComponentExtension.on_component_input class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_component_input</span><span class=p>(</span><span class=n>ctx</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" OnComponentInputContext (django_components.extension.OnComponentInputContext)" href=../extension_hooks/#django_components.extension.OnComponentInputContext>OnComponentInputContext</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L433 target=_blank>See source code</a></p> <p>Called when a <a href=../api#django_components.Component><code>Component</code></a> was triggered to render, but before a component's context and data methods are invoked.</p> <p>This hook is called before <a href=../api#django_components.Component.get_context_data><code>Component.get_context_data()</code></a>, <a href=../api#django_components.Component.get_js_data><code>Component.get_js_data()</code></a> and <a href=../api#django_components.Component.get_css_data><code>Component.get_css_data()</code></a>.</p> <p>Use this hook to modify or validate component inputs before they're processed.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>OnComponentInputContext</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>on_component_input</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>ctx</span><span class=p>:</span> <span class=n>OnComponentInputContext</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=c1># Add extra kwarg to all components when they are rendered</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>ctx</span><span class=o>.</span><span class=n>kwargs</span><span class=p>[</span><span class=s2>&quot;my_input&quot;</span><span class=p>]</span> <span class=o>=</span> <span class=s2>&quot;my_value&quot;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentExtension.on_component_registered class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_component_registered</span> <a href=#django_components.ComponentExtension.on_component_registered class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_component_registered</span><span class=p>(</span><span class=n>ctx</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" OnComponentRegisteredContext (django_components.extension.OnComponentRegisteredContext)" href=../extension_hooks/#django_components.extension.OnComponentRegisteredContext>OnComponentRegisteredContext</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L389 target=_blank>See source code</a></p> <p>Called when a <a href=../api#django_components.Component><code>Component</code></a> class is registered with a <a href=../api#django_components.ComponentRegistry><code>ComponentRegistry</code></a>.</p> <p>This hook is called after a <a href=../api#django_components.Component><code>Component</code></a> class is successfully registered.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>OnComponentRegisteredContext</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>on_component_registered</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>ctx</span><span class=p>:</span> <span class=n>OnComponentRegisteredContext</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=nb>print</span><span class=p>(</span><span class=sa>f</span><span class=s2>&quot;Component </span><span class=si>{</span><span class=n>ctx</span><span class=o>.</span><span class=n>component_cls</span><span class=si>}</span><span class=s2> registered to </span><span class=si>{</span><span class=n>ctx</span><span class=o>.</span><span class=n>registry</span><span class=si>}</span><span class=s2> as &#39;</span><span class=si>{</span><span class=n>ctx</span><span class=o>.</span><span class=n>name</span><span class=si>}</span><span class=s2>&#39;&quot;</span><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentExtension.on_component_unregistered class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_component_unregistered</span> <a href=#django_components.ComponentExtension.on_component_unregistered class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_component_unregistered</span><span class=p>(</span><span class=n>ctx</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" OnComponentUnregisteredContext (django_components.extension.OnComponentUnregisteredContext)" href=../extension_hooks/#django_components.extension.OnComponentUnregisteredContext>OnComponentUnregisteredContext</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L409 target=_blank>See source code</a></p> <p>Called when a <a href=../api#django_components.Component><code>Component</code></a> class is unregistered from a <a href=../api#django_components.ComponentRegistry><code>ComponentRegistry</code></a>.</p> <p>This hook is called after a <a href=../api#django_components.Component><code>Component</code></a> class is removed from the registry.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>OnComponentUnregisteredContext</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>on_component_unregistered</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>ctx</span><span class=p>:</span> <span class=n>OnComponentUnregisteredContext</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=nb>print</span><span class=p>(</span><span class=sa>f</span><span class=s2>&quot;Component </span><span class=si>{</span><span class=n>ctx</span><span class=o>.</span><span class=n>component_cls</span><span class=si>}</span><span class=s2> unregistered from </span><span class=si>{</span><span class=n>ctx</span><span class=o>.</span><span class=n>registry</span><span class=si>}</span><span class=s2> as &#39;</span><span class=si>{</span><span class=n>ctx</span><span class=o>.</span><span class=n>name</span><span class=si>}</span><span class=s2>&#39;&quot;</span><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentExtension.on_registry_created class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_registry_created</span> <a href=#django_components.ComponentExtension.on_registry_created class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_registry_created</span><span class=p>(</span><span class=n>ctx</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" OnRegistryCreatedContext (django_components.extension.OnRegistryCreatedContext)" href=../extension_hooks/#django_components.extension.OnRegistryCreatedContext>OnRegistryCreatedContext</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L345 target=_blank>See source code</a></p> <p>Called when a new <a href=../api#django_components.ComponentRegistry><code>ComponentRegistry</code></a> is created.</p> <p>This hook is called after a new <a href=../api#django_components.ComponentRegistry><code>ComponentRegistry</code></a> instance is initialized.</p> <p>Use this hook to perform any initialization needed for the registry.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>OnRegistryCreatedContext</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>on_registry_created</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>ctx</span><span class=p>:</span> <span class=n>OnRegistryCreatedContext</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=c1># Add a new attribute to the registry</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>ctx</span><span class=o>.</span><span class=n>registry</span><span class=o>.</span><span class=n>my_attr</span> <span class=o>=</span> <span class=s2>&quot;my_value&quot;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentExtension.on_registry_deleted class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">on_registry_deleted</span> <a href=#django_components.ComponentExtension.on_registry_deleted class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>on_registry_deleted</span><span class=p>(</span><span class=n>ctx</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" OnRegistryDeletedContext (django_components.extension.OnRegistryDeletedContext)" href=../extension_hooks/#django_components.extension.OnRegistryDeletedContext>OnRegistryDeletedContext</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extension.py#L367 target=_blank>See source code</a></p> <p>Called when a <a href=../api#django_components.ComponentRegistry><code>ComponentRegistry</code></a> is being deleted.</p> <p>This hook is called before a <a href=../api#django_components.ComponentRegistry><code>ComponentRegistry</code></a> instance is deleted.</p> <p>Use this hook to perform any cleanup related to the registry.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentExtension</span><span class=p>,</span> <span class=n>OnRegistryDeletedContext</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyExtension</span><span class=p>(</span><span class=n>ComponentExtension</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>on_registry_deleted</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>ctx</span><span class=p>:</span> <span class=n>OnRegistryDeletedContext</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=c1># Remove registry from the extension&#39;s cache on deletion</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=bp>self</span><span class=o>.</span><span class=n>cache</span><span class=o>.</span><span class=n>pop</span><span class=p>(</span><span class=n>ctx</span><span class=o>.</span><span class=n>registry</span><span class=p>,</span> <span class=kc>None</span><span class=p>)</span>
</code></pre></div> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ComponentFileEntry class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentFileEntry</span> <a href=#django_components.ComponentFileEntry class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>tuple</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/util/loader.py#L113 target=_blank>See source code</a></p> <p>Result returned by <a href=../api#django_components.get_component_files><code>get_component_files()</code></a>.</p> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" dot_path
instance-attribute
(django_components.ComponentFileEntry.dot_path)" href=#django_components.ComponentFileEntry.dot_path>dot_path</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" filepath
instance-attribute
(django_components.ComponentFileEntry.filepath)" href=#django_components.ComponentFileEntry.filepath>filepath</a></code></b> (<code><a class="autorefs autorefs-external" title=pathlib.Path href=https://docs.python.org/3.12/library/pathlib.html#pathlib.Path>Path</a></code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentFileEntry.dot_path class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">dot_path</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentFileEntry.dot_path class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>dot_path</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/util/loader.py#L116 target=_blank>See source code</a></p> <p>The python import path for the module. E.g. <code>app.components.mycomp</code></p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentFileEntry.filepath class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">filepath</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentFileEntry.filepath class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>filepath</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=pathlib.Path href=https://docs.python.org/3.12/library/pathlib.html#pathlib.Path>Path</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/util/loader.py#L118 target=_blank>See source code</a></p> <p>The filesystem path to the module. E.g. <code>/path/to/project/app/components/mycomp.py</code></p> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ComponentMediaInput class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentMediaInput</span> <a href=#django_components.ComponentMediaInput class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>typing.Protocol</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_media.py#L86 target=_blank>See source code</a></p> <p>Defines JS and CSS media files associated with a <a href=../api#django_components.Component><code>Component</code></a>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyTable</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>js</span> <span class=o>=</span> <span class=p>[</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=s2>&quot;path/to/script.js&quot;</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=s2>&quot;https://unpkg.com/alpinejs@3.14.7/dist/cdn.min.js&quot;</span><span class=p>,</span> <span class=c1># AlpineJS</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=p>]</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=n>css</span> <span class=o>=</span> <span class=p>{</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=s2>&quot;all&quot;</span><span class=p>:</span> <span class=p>[</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=s2>&quot;path/to/style.css&quot;</span><span class=p>,</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=s2>&quot;https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css&quot;</span><span class=p>,</span> <span class=c1># TailwindCSS</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a> <span class=p>],</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a> <span class=s2>&quot;print&quot;</span><span class=p>:</span> <span class=p>[</span><span class=s2>&quot;path/to/style2.css&quot;</span><span class=p>],</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a> <span class=p>}</span>
</code></pre></div> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" css
class-attribute
instance-attribute
(django_components.ComponentMediaInput.css)" href=#django_components.ComponentMediaInput.css>css</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a>, <a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a>], <a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a>], <a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a>]]]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" extend
class-attribute
instance-attribute
(django_components.ComponentMediaInput.extend)" href=#django_components.ComponentMediaInput.extend>extend</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a>, <a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a>]]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" js
class-attribute
instance-attribute
(django_components.ComponentMediaInput.js)" href=#django_components.ComponentMediaInput.js>js</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a>, <a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a>]]]</code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentMediaInput.css class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">css</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentMediaInput.css class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>css</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n><a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a></span><span class=p>]]</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=p>]</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_media.py#L107 target=_blank>See source code</a></p> <p>CSS files associated with a <a href=../api#django_components.Component><code>Component</code></a>.</p> <ul> <li> <p>If a string, it's assumed to be a path to a CSS file.</p> </li> <li> <p>If a list, each entry is assumed to be a path to a CSS file.</p> </li> <li> <p>If a dict, the keys are media types (e.g. "all", "print", "screen", etc.), and the values are either:</p> <ul> <li>A string, assumed to be a path to a CSS file.</li> <li>A list, each entry is assumed to be a path to a CSS file.</li> </ul> </li> </ul> <p>Each entry can be a string, bytes, SafeString, PathLike, or a callable that returns one of the former (see <a href=../api#django_components.ComponentMediaInputPath><code>ComponentMediaInputPath</code></a>).</p> <p>Examples: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>css</span> <span class=o>=</span> <span class=s2>&quot;path/to/style.css&quot;</span>
</code></pre></div></p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a> <span class=n>css</span> <span class=o>=</span> <span class=p>[</span><span class=s2>&quot;path/to/style1.css&quot;</span><span class=p>,</span> <span class=s2>&quot;path/to/style2.css&quot;</span><span class=p>]</span>
</code></pre></div> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a> <span class=n>css</span> <span class=o>=</span> <span class=p>{</span>
<a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a> <span class=s2>&quot;all&quot;</span><span class=p>:</span> <span class=s2>&quot;path/to/style.css&quot;</span><span class=p>,</span>
<a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a> <span class=s2>&quot;print&quot;</span><span class=p>:</span> <span class=s2>&quot;path/to/print.css&quot;</span><span class=p>,</span>
<a id=__codelineno-2-6 name=__codelineno-2-6 href=#__codelineno-2-6></a> <span class=p>}</span>
</code></pre></div> <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a> <span class=n>css</span> <span class=o>=</span> <span class=p>{</span>
<a id=__codelineno-3-4 name=__codelineno-3-4 href=#__codelineno-3-4></a> <span class=s2>&quot;all&quot;</span><span class=p>:</span> <span class=p>[</span><span class=s2>&quot;path/to/style1.css&quot;</span><span class=p>,</span> <span class=s2>&quot;path/to/style2.css&quot;</span><span class=p>],</span>
<a id=__codelineno-3-5 name=__codelineno-3-5 href=#__codelineno-3-5></a> <span class=s2>&quot;print&quot;</span><span class=p>:</span> <span class=s2>&quot;path/to/print.css&quot;</span><span class=p>,</span>
<a id=__codelineno-3-6 name=__codelineno-3-6 href=#__codelineno-3-6></a> <span class=p>}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentMediaInput.extend class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">extend</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentMediaInput.extend class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>extend</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>True</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_media.py#L192 target=_blank>See source code</a></p> <p>Configures whether the component should inherit the media files from the parent component.</p> <ul> <li>If <code>True</code>, the component inherits the media files from the parent component.</li> <li>If <code>False</code>, the component does not inherit the media files from the parent component.</li> <li>If a list of components classes, the component inherits the media files ONLY from these specified components.</li> </ul> <p>Read more in <a href=../../concepts/fundamentals/defining_js_css_html_files/#controlling-media-inheritance>Controlling Media Inheritance</a> section.</p> <p><strong>Example:</strong></p> <p>Disable media inheritance:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>ParentComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>js</span> <span class=o>=</span> <span class=p>[</span><span class=s2>&quot;parent.js&quot;</span><span class=p>]</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>ParentComponent</span><span class=p>):</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=n>extend</span> <span class=o>=</span> <span class=kc>False</span> <span class=c1># Don&#39;t inherit parent media</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=n>js</span> <span class=o>=</span> <span class=p>[</span><span class=s2>&quot;script.js&quot;</span><span class=p>]</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=nb>print</span><span class=p>(</span><span class=n>MyComponent</span><span class=o>.</span><span class=n>media</span><span class=o>.</span><span class=n>_js</span><span class=p>)</span> <span class=c1># [&quot;script.js&quot;]</span>
</code></pre></div> <p>Specify which components to inherit from. In this case, the media files are inherited ONLY from the specified components, and NOT from the original parent components:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=k>class</span><span class=w> </span><span class=nc>ParentComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a> <span class=n>js</span> <span class=o>=</span> <span class=p>[</span><span class=s2>&quot;parent.js&quot;</span><span class=p>]</span>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>ParentComponent</span><span class=p>):</span>
<a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a> <span class=c1># Only inherit from these, ignoring the files from the parent</span>
<a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a> <span class=n>extend</span> <span class=o>=</span> <span class=p>[</span><span class=n>OtherComponent1</span><span class=p>,</span> <span class=n>OtherComponent2</span><span class=p>]</span>
<a id=__codelineno-1-9 name=__codelineno-1-9 href=#__codelineno-1-9></a>
<a id=__codelineno-1-10 name=__codelineno-1-10 href=#__codelineno-1-10></a> <span class=n>js</span> <span class=o>=</span> <span class=p>[</span><span class=s2>&quot;script.js&quot;</span><span class=p>]</span>
<a id=__codelineno-1-11 name=__codelineno-1-11 href=#__codelineno-1-11></a>
<a id=__codelineno-1-12 name=__codelineno-1-12 href=#__codelineno-1-12></a><span class=nb>print</span><span class=p>(</span><span class=n>MyComponent</span><span class=o>.</span><span class=n>media</span><span class=o>.</span><span class=n>_js</span><span class=p>)</span> <span class=c1># [&quot;script.js&quot;, &quot;other1.js&quot;, &quot;other2.js&quot;]</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentMediaInput.js class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">js</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentMediaInput.js class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>js</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentMediaInputPath
module-attribute
(django_components.component_media.ComponentMediaInputPath)" href=#django_components.ComponentMediaInputPath>ComponentMediaInputPath</a></span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_media.py#L161 target=_blank>See source code</a></p> <p>JS files associated with a <a href=../api#django_components.Component><code>Component</code></a>.</p> <ul> <li> <p>If a string, it's assumed to be a path to a JS file.</p> </li> <li> <p>If a list, each entry is assumed to be a path to a JS file.</p> </li> </ul> <p>Each entry can be a string, bytes, SafeString, PathLike, or a callable that returns one of the former (see <a href=../api#django_components.ComponentMediaInputPath><code>ComponentMediaInputPath</code></a>).</p> <p>Examples: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>js</span> <span class=o>=</span> <span class=s2>&quot;path/to/script.js&quot;</span>
</code></pre></div></p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a> <span class=n>js</span> <span class=o>=</span> <span class=p>[</span><span class=s2>&quot;path/to/script1.js&quot;</span><span class=p>,</span> <span class=s2>&quot;path/to/script2.js&quot;</span><span class=p>]</span>
</code></pre></div> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a> <span class=n>js</span> <span class=o>=</span> <span class=k>lambda</span><span class=p>:</span> <span class=p>[</span><span class=s2>&quot;path/to/script1.js&quot;</span><span class=p>,</span> <span class=s2>&quot;path/to/script2.js&quot;</span><span class=p>]</span>
</code></pre></div> </div> </div> </div> </div> </div> <div class="doc doc-object doc-attribute"> <h2 id=django_components.ComponentMediaInputPath class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">ComponentMediaInputPath</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small> </span> <a href=#django_components.ComponentMediaInputPath class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>ComponentMediaInputPath</span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#bytes>bytes</a></span><span class=p>,</span> <span class=n><span title=django.utils.safestring.SafeData>SafeData</span></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=pathlib.Path href=https://docs.python.org/3.12/library/pathlib.html#pathlib.Path>Path</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=os.PathLike href=https://docs.python.org/3.12/library/os.html#os.PathLike>PathLike</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[],</span> <span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#bytes>bytes</a></span><span class=p>,</span> <span class=n><span title=django.utils.safestring.SafeData>SafeData</span></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=pathlib.Path href=https://docs.python.org/3.12/library/pathlib.html#pathlib.Path>Path</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=os.PathLike href=https://docs.python.org/3.12/library/os.html#os.PathLike>PathLike</a></span><span class=p>]]]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_media.py#L45 target=_blank>See source code</a></p> <p>A type representing an entry in <a href=../api#django_components.ComponentMediaInput.js>Media.js</a> or <a href=../api#django_components.ComponentMediaInput.css>Media.css</a>.</p> <p>If an entry is a <a href=https://dev.to/doridoro/django-safestring-afj>SafeString</a> (or has <code>__html__</code> method), then entry is assumed to be a formatted HTML tag. Otherwise, it's assumed to be a path to a file.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=k>class</span><span class=w> </span><span class=nc>Media</span><span class=p>:</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>js</span> <span class=o>=</span> <span class=p>[</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=s2>&quot;path/to/script.js&quot;</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=sa>b</span><span class=s2>&quot;script.js&quot;</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>SafeString</span><span class=p>(</span><span class=s2>&quot;&lt;script src=&#39;path/to/script.js&#39;&gt;&lt;/script&gt;&quot;</span><span class=p>),</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=p>]</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=n>css</span> <span class=o>=</span> <span class=p>[</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=n>Path</span><span class=p>(</span><span class=s2>&quot;path/to/style.css&quot;</span><span class=p>),</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=k>lambda</span><span class=p>:</span> <span class=s2>&quot;path/to/style.css&quot;</span><span class=p>,</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a> <span class=k>lambda</span><span class=p>:</span> <span class=n>Path</span><span class=p>(</span><span class=s2>&quot;path/to/style.css&quot;</span><span class=p>),</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a> <span class=p>]</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ComponentRegistry class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentRegistry</span> <a href=#django_components.ComponentRegistry class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>ComponentRegistry</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>library</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.template.Library>Library</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span> <span class=n>settings</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" RegistrySettings (django_components.component_registry.RegistrySettings)" href=#django_components.RegistrySettings>RegistrySettings</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentRegistry (django_components.component_registry.ComponentRegistry)" href=#django_components.ComponentRegistry>ComponentRegistry</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-internal" title=" RegistrySettings (django_components.component_registry.RegistrySettings)" href=#django_components.RegistrySettings>RegistrySettings</a></span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>None</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>object</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L165 target=_blank>See source code</a></p> <p>Manages <a href=../api#django_components.Component>components</a> and makes them available in the template, by default as <a href=../template_tags#component><code>{% component %}</code></a> tags.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_comp&quot;</span> <span class=nv>key</span><span class=o>=</span><span class=nv>value</span> <span class=cp>%}</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div> <p>To enable a component to be used in a template, the component must be registered with a component registry.</p> <p>When you register a component to a registry, behind the scenes the registry automatically adds the component's template tag (e.g. <code>{% component %}</code> to the <a href=https://docs.djangoproject.com/en/5.1/howto/custom-template-tags/#code-layout><code>Library</code></a>. And the opposite happens when you unregister a component - the tag is removed.</p> <p>See <a href=../../concepts/advanced/component_registry>Registering components</a>.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>library</code></b> (<code><span title=django.template.Library>Library</span></code>, default: <code>None</code> ) <div class=doc-md-description> <p>Django <a href=https://docs.djangoproject.com/en/5.1/howto/custom-template-tags/#code-layout><code>Library</code></a> associated with this registry. If omitted, the default Library instance from django_components is used.</p> </div> </li> <li class="doc-section-item field-body"> <b><code>settings</code></b> (<code><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-internal" title=" RegistrySettings (django_components.component_registry.RegistrySettings)" href=#django_components.RegistrySettings>RegistrySettings</a>, <a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a>[[<a class="autorefs autorefs-internal" title=" ComponentRegistry (django_components.component_registry.ComponentRegistry)" href=#django_components.ComponentRegistry>ComponentRegistry</a>], <a class="autorefs autorefs-internal" title=" RegistrySettings (django_components.component_registry.RegistrySettings)" href=#django_components.RegistrySettings>RegistrySettings</a>]]</code>, default: <code>None</code> ) <div class=doc-md-description> <p>Configure how the components registered with this registry will behave when rendered. See <a href=../api#django_components.RegistrySettings><code>RegistrySettings</code></a>. Can be either a static value or a callable that returns the settings. If omitted, the settings from <a href=../settings#django_components.app_settings.ComponentsSettings><code>COMPONENTS</code></a> are used.</p> </div> </li> </ul> <p><strong>Notes:</strong></p> <ul> <li>The default registry is available as <a href=../api#django_components.registry><code>django_components.registry</code></a>.</li> <li>The default registry is used when registering components with <a href=../api#django_components.register><code>@register</code></a> decorator.</li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># Use with default Library</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span> <span class=o>=</span> <span class=n>ComponentRegistry</span><span class=p>()</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=c1># Or a custom one</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=n>my_lib</span> <span class=o>=</span> <span class=n>Library</span><span class=p>()</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=n>registry</span> <span class=o>=</span> <span class=n>ComponentRegistry</span><span class=p>(</span><span class=n>library</span><span class=o>=</span><span class=n>my_lib</span><span class=p>)</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># Usage</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;card&quot;</span><span class=p>,</span> <span class=n>CardComponent</span><span class=p>)</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=n>registry</span><span class=o>.</span><span class=n>all</span><span class=p>()</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=n>registry</span><span class=o>.</span><span class=n>clear</span><span class=p>()</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a><span class=n>registry</span><span class=o>.</span><span class=n>get</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=n>registry</span><span class=o>.</span><span class=n>has</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
</code></pre></div> <h3 id=django_components.ComponentRegistry--using-registry-to-share-components>Using registry to share components<a class=headerlink href=#django_components.ComponentRegistry--using-registry-to-share-components title="Permanent link">¤</a></h3> <p>You can use component registry for isolating or "packaging" components:</p> <ol> <li> <p>Create new instance of <code>ComponentRegistry</code> and Library: <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=x>my_comps = Library()</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=x>my_comps_reg = ComponentRegistry(library=my_comps)</span>
</code></pre></div></p> </li> <li> <p>Register components to the registry: <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=x>my_comps_reg.register(&quot;my_button&quot;, ButtonComponent)</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a><span class=x>my_comps_reg.register(&quot;my_card&quot;, CardComponent)</span>
</code></pre></div></p> </li> <li> <p>In your target project, load the Library associated with the registry: <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=cp>{%</span> <span class=k>load</span> <span class=nv>my_comps</span> <span class=cp>%}</span>
</code></pre></div></p> </li> <li> <p>Use the registered components in your templates: <div class=highlight><pre><span></span><code><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;button&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div></p> </li> </ol> <p><span class=doc-section-title>Methods:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" all (django_components.ComponentRegistry.all)" href=#django_components.ComponentRegistry.all>all</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" clear (django_components.ComponentRegistry.clear)" href=#django_components.ComponentRegistry.clear>clear</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" get (django_components.ComponentRegistry.get)" href=#django_components.ComponentRegistry.get>get</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" has (django_components.ComponentRegistry.has)" href=#django_components.ComponentRegistry.has>has</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" register (django_components.ComponentRegistry.register)" href=#django_components.ComponentRegistry.register>register</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" unregister (django_components.ComponentRegistry.unregister)" href=#django_components.ComponentRegistry.unregister>unregister</a></code></b> <div class=doc-md-description> </div> </li> </ul> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" library
property
(django_components.ComponentRegistry.library)" href=#django_components.ComponentRegistry.library>library</a></code></b> (<code><span title=django.template.Library>Library</span></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" settings
property
(django_components.ComponentRegistry.settings)" href=#django_components.ComponentRegistry.settings>settings</a></code></b> (<code><span title=django_components.component_registry.InternalRegistrySettings>InternalRegistrySettings</span></code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentRegistry.library class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">library</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.ComponentRegistry.library class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>library</span><span class=p>:</span> <span class=n><span title=django.template.Library>Library</span></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L283 target=_blank>See source code</a></p> <p>The template tag <a href=https://docs.djangoproject.com/en/5.1/howto/custom-template-tags/#code-layout><code>Library</code></a> that is associated with the registry.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentRegistry.settings class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">settings</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.ComponentRegistry.settings class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>settings</span><span class=p>:</span> <span class=n><span title=django_components.component_registry.InternalRegistrySettings>InternalRegistrySettings</span></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L304 target=_blank>See source code</a></p> <p><a href=../api#django_components.RegistrySettings>Registry settings</a> configured for this registry.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentRegistry.all class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">all</span> <a href=#django_components.ComponentRegistry.all class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nb>all</span><span class=p>()</span> <span class=o>-&gt;</span> <span class=nf><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>]]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L494 target=_blank>See source code</a></p> <p>Retrieve all registered <a href=../api#django_components.Component><code>Component</code></a> classes.</p> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <code><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a>]]</code> <div class=doc-md-description> <p>Dict[str, Type[Component]]: A dictionary of component names to component classes</p> </div> </li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># First register components</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;card&quot;</span><span class=p>,</span> <span class=n>CardComponent</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=c1># Then get all</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=n>registry</span><span class=o>.</span><span class=n>all</span><span class=p>()</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=c1># &gt; {</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=c1># &gt; &quot;button&quot;: ButtonComponent,</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># &gt; &quot;card&quot;: CardComponent,</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=c1># &gt; }</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentRegistry.clear class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">clear</span> <a href=#django_components.ComponentRegistry.clear class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>clear</span><span class=p>()</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L518 target=_blank>See source code</a></p> <p>Clears the registry, unregistering all components.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># First register components</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;card&quot;</span><span class=p>,</span> <span class=n>CardComponent</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=c1># Then clear</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=n>registry</span><span class=o>.</span><span class=n>clear</span><span class=p>()</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=c1># Then get all</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=n>registry</span><span class=o>.</span><span class=n>all</span><span class=p>()</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># &gt; {}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentRegistry.get class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">get</span> <a href=#django_components.ComponentRegistry.get class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L440 target=_blank>See source code</a></p> <p>Retrieve a <a href=../api#django_components.Component><code>Component</code></a> class registered under the given name.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>name</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> <p>The name under which the component was registered. Required.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a>]</code> <div class=doc-md-description> <p>Type[Component]: The component class registered under the given name.</p> </div> </li> </ul> <p><strong>Raises:</strong></p> <ul> <li><a href=../exceptions#django_components.NotRegistered><code>NotRegistered</code></a> if the given name is not registered.</li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># First register component</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=c1># Then get</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=n>registry</span><span class=o>.</span><span class=n>get</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=c1># &gt; ButtonComponent</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentRegistry.has class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">has</span> <a href=#django_components.ComponentRegistry.has class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>has</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L471 target=_blank>See source code</a></p> <p>Check if a <a href=../api#django_components.Component><code>Component</code></a> class is registered under the given name.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>name</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> <p>The name under which the component was registered. Required.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>bool</code></b> ( <code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></code> ) <div class=doc-md-description> <p><code>True</code> if the component is registered, <code>False</code> otherwise.</p> </div> </li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># First register component</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=c1># Then check</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=n>registry</span><span class=o>.</span><span class=n>has</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=c1># &gt; True</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentRegistry.register class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">register</span> <a href=#django_components.ComponentRegistry.register class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>register</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n>component</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>])</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L327 target=_blank>See source code</a></p> <p>Register a <a href=../api#django_components.Component><code>Component</code></a> class with this registry under the given name.</p> <p>A component MUST be registered before it can be used in a template such as: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_comp&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div></p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>name</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> <p>The name under which the component will be registered. Required.</p> </div> </li> <li class="doc-section-item field-body"> <b><code>component</code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a>]</code>) <div class=doc-md-description> <p>The component class to register. Required.</p> </div> </li> </ul> <p><strong>Raises:</strong></p> <ul> <li><a href=../exceptions#django_components.AlreadyRegistered><code>AlreadyRegistered</code></a> if a different component was already registered under the same name.</li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentRegistry.unregister class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">unregister</span> <a href=#django_components.ComponentRegistry.unregister class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>unregister</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L379 target=_blank>See source code</a></p> <p>Unregister the <a href=../api#django_components.Component><code>Component</code></a> class that was registered under the given name.</p> <p>Once a component is unregistered, it is no longer available in the templates.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>name</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> <p>The name under which the component is registered. Required.</p> </div> </li> </ul> <p><strong>Raises:</strong></p> <ul> <li><a href=../exceptions#django_components.NotRegistered><code>NotRegistered</code></a> if the given name is not registered.</li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># First register component</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=c1># Then unregister</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=n>registry</span><span class=o>.</span><span class=n>unregister</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
</code></pre></div> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ComponentUrl class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentUrl</span> <a href=#django_components.ComponentUrl class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>django_components.extension.BaseExtensionClass</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extensions/url.py#L59 target=_blank>See source code</a></p> <p>The interface for <code>Component.Url</code>.</p> <p>This class is used to configure whether the component should be available via a URL.</p> <p>Read more about <a href=../../concepts/fundamentals/component_views_urls>Component views and URLs</a>.</p> <p><strong>Example:</strong> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>class</span><span class=w> </span><span class=nc>Url</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>public</span> <span class=o>=</span> <span class=kc>True</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=c1># Get the URL for the component</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=n>url</span> <span class=o>=</span> <span class=n>get_component_url</span><span class=p>(</span><span class=n>MyComponent</span><span class=p>)</span>
</code></pre></div></p> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" public
class-attribute
instance-attribute
(django_components.ComponentUrl.public)" href=#django_components.ComponentUrl.public>public</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" url
property
(django_components.ComponentUrl.url)" href=#django_components.ComponentUrl.url>url</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentUrl.public class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">public</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentUrl.public class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>public</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span> <span class=o>=</span> <span class=kc>False</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extensions/url.py#L80 target=_blank>See source code</a></p> <p>Whether this <a href=../api#django_components.Component><code>Component</code></a> should be available via a URL. Defaults to <code>False</code>.</p> <p>If <code>True</code>, the Component will have its own unique URL path.</p> <p>You can use this to write components that will correspond to HTML fragments for HTMX or similar libraries.</p> <p>To obtain the component URL, either access the url from <a href=../api#django_components.ComponentUrl.url><code>Component.Url.url</code></a> or use the <a href=../api#django_components.get_component_url><code>get_component_url()</code></a> function.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>get_component_url</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>class</span><span class=w> </span><span class=nc>Url</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>public</span> <span class=o>=</span> <span class=kc>True</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=c1># Get the URL for the component</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=n>url</span> <span class=o>=</span> <span class=n>get_component_url</span><span class=p>(</span><span class=n>MyComponent</span><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentUrl.url class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">url</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.ComponentUrl.url class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>url</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extensions/url.py#L109 target=_blank>See source code</a></p> <p>The URL for the component.</p> <p>Raises <code>RuntimeError</code> if the component is not public.</p> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ComponentVars class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentVars</span> <a href=#django_components.ComponentVars class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>tuple</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L194 target=_blank>See source code</a></p> <p>Type for the variables available inside the component templates.</p> <p>All variables here are scoped under <code>component_vars.</code>, so e.g. attribute <code>is_filled</code> on this class is accessible inside the template as:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{{</span> <span class=nv>component_vars.is_filled</span> <span class=cp>}}</span>
</code></pre></div> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" is_filled
instance-attribute
(django_components.ComponentVars.is_filled)" href=#django_components.ComponentVars.is_filled>is_filled</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a>]</code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentVars.is_filled class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">is_filled</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentVars.is_filled class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>is_filled</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L206 target=_blank>See source code</a></p> <p>Dictonary describing which component slots are filled (<code>True</code>) or are not (<code>False</code>).</p> <p><i>New in version 0.70</i></p> <p>Use as <code>{{ component_vars.is_filled }}</code></p> <p>Example:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c>{# Render wrapping HTML only if the slot is defined #}</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=cp>{%</span> <span class=k>if</span> <span class=nv>component_vars.is_filled.my_slot</span> <span class=cp>%}</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=x> &lt;div class=&quot;slot-wrapper&quot;&gt;</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=x> </span><span class=cp>{%</span> <span class=k>slot</span> <span class=s2>&quot;my_slot&quot;</span> <span class=o>/</span> <span class=cp>%}</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=x> &lt;/div&gt;</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=cp>{%</span> <span class=k>endif</span> <span class=cp>%}</span>
</code></pre></div> <p>This is equivalent to checking if a given key is among the slot fills:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyTable</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=k>def</span><span class=w> </span><span class=nf>get_context_data</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>):</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a> <span class=k>return</span> <span class=p>{</span>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a> <span class=s2>&quot;my_slot_filled&quot;</span><span class=p>:</span> <span class=s2>&quot;my_slot&quot;</span> <span class=ow>in</span> <span class=bp>self</span><span class=o>.</span><span class=n>input</span><span class=o>.</span><span class=n>slots</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a> <span class=p>}</span>
</code></pre></div> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ComponentView class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentView</span> <a href=#django_components.ComponentView class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>ComponentView</span><span class=p>(</span><span class=n>component</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span>
</code></pre></div> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>django_components.extension.BaseExtensionClass</code>, <code>django.views.generic.base.View</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extensions/view.py#L16 target=_blank>See source code</a></p> <p>The interface for <code>Component.View</code>.</p> <p>Override the methods of this class to define the behavior of the component.</p> <p>This class is a subclass of <code>django.views.View</code>. The <code>Component</code> instance is available via <code>self.component</code>.</p> <p><strong>Example:</strong> ```python class MyComponent(Component): class View: def get(self, request: HttpRequest, <em>args: Any, </em>*kwargs: Any) -&gt; HttpResponse: return HttpResponse("Hello, world!")</p> <p><span class=doc-section-title>Methods:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" delete (django_components.ComponentView.delete)" href=#django_components.ComponentView.delete>delete</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" get (django_components.ComponentView.get)" href=#django_components.ComponentView.get>get</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" head (django_components.ComponentView.head)" href=#django_components.ComponentView.head>head</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" options (django_components.ComponentView.options)" href=#django_components.ComponentView.options>options</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" patch (django_components.ComponentView.patch)" href=#django_components.ComponentView.patch>patch</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" post (django_components.ComponentView.post)" href=#django_components.ComponentView.post>post</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" put (django_components.ComponentView.put)" href=#django_components.ComponentView.put>put</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" trace (django_components.ComponentView.trace)" href=#django_components.ComponentView.trace>trace</a></code></b> <div class=doc-md-description> </div> </li> </ul> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" component
class-attribute
instance-attribute
(django_components.ComponentView.component)" href=#django_components.ComponentView.component>component</a></code></b> <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentView.component class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">component</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentView.component class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>component</span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-external" title=typing.cast href=https://docs.python.org/3.12/library/typing.html#typing.cast>cast</a></span><span class=p>(</span><span class=s1>&#39;Component&#39;</span><span class=p>,</span> <span class=kc>None</span><span class=p>)</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentView.delete class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">delete</span> <a href=#django_components.ComponentView.delete class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>delete</span><span class=p>(</span><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentView.get class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">get</span> <a href=#django_components.ComponentView.get class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get</span><span class=p>(</span><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentView.head class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">head</span> <a href=#django_components.ComponentView.head class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>head</span><span class=p>(</span><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentView.options class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">options</span> <a href=#django_components.ComponentView.options class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>options</span><span class=p>(</span><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentView.patch class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">patch</span> <a href=#django_components.ComponentView.patch class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>patch</span><span class=p>(</span><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentView.post class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">post</span> <a href=#django_components.ComponentView.post class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>post</span><span class=p>(</span><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentView.put class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">put</span> <a href=#django_components.ComponentView.put class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>put</span><span class=p>(</span><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.ComponentView.trace class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">trace</span> <a href=#django_components.ComponentView.trace class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>trace</span><span class=p>(</span><span class=n>request</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpRequest href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpRequest>HttpRequest</a></span><span class=p>,</span> <span class=o>*</span><span class=n>args</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.http.HttpResponse href=https://docs.djangoproject.com/en/5.0/_objects/ref/request-response/#django.http.HttpResponse>HttpResponse</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ComponentsSettings class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentsSettings</span> <a href=#django_components.ComponentsSettings class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>tuple</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L138 target=_blank>See source code</a></p> <p>Settings available for django_components.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>autodiscover</span><span class=o>=</span><span class=kc>False</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>dirs</span> <span class=o>=</span> <span class=p>[</span><span class=n>BASE_DIR</span> <span class=o>/</span> <span class=s2>&quot;components&quot;</span><span class=p>],</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=p>)</span>
</code></pre></div> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" app_dirs
class-attribute
instance-attribute
(django_components.ComponentsSettings.app_dirs)" href=#django_components.ComponentsSettings.app_dirs>app_dirs</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Sequence href=https://docs.python.org/3.12/library/typing.html#typing.Sequence>Sequence</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" autodiscover
class-attribute
instance-attribute
(django_components.ComponentsSettings.autodiscover)" href=#django_components.ComponentsSettings.autodiscover>autodiscover</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" cache
class-attribute
instance-attribute
(django_components.ComponentsSettings.cache)" href=#django_components.ComponentsSettings.cache>cache</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" context_behavior
class-attribute
instance-attribute
(django_components.ComponentsSettings.context_behavior)" href=#django_components.ComponentsSettings.context_behavior>context_behavior</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<span title=django_components.app_settings.ContextBehaviorType>ContextBehaviorType</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" debug_highlight_components
class-attribute
instance-attribute
(django_components.ComponentsSettings.debug_highlight_components)" href=#django_components.ComponentsSettings.debug_highlight_components>debug_highlight_components</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" debug_highlight_slots
class-attribute
instance-attribute
(django_components.ComponentsSettings.debug_highlight_slots)" href=#django_components.ComponentsSettings.debug_highlight_slots>debug_highlight_slots</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" dirs
class-attribute
instance-attribute
(django_components.ComponentsSettings.dirs)" href=#django_components.ComponentsSettings.dirs>dirs</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Sequence href=https://docs.python.org/3.12/library/typing.html#typing.Sequence>Sequence</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" title=os.PathLike href=https://docs.python.org/3.12/library/os.html#os.PathLike>PathLike</a>, <a class="autorefs autorefs-external" title=typing.Tuple href=https://docs.python.org/3.12/library/typing.html#typing.Tuple>Tuple</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>], <a class="autorefs autorefs-external" title=typing.Tuple href=https://docs.python.org/3.12/library/typing.html#typing.Tuple>Tuple</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" title=os.PathLike href=https://docs.python.org/3.12/library/os.html#os.PathLike>PathLike</a>]]]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" dynamic_component_name
class-attribute
instance-attribute
(django_components.ComponentsSettings.dynamic_component_name)" href=#django_components.ComponentsSettings.dynamic_component_name>dynamic_component_name</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" extensions
class-attribute
instance-attribute
(django_components.ComponentsSettings.extensions)" href=#django_components.ComponentsSettings.extensions>extensions</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Sequence href=https://docs.python.org/3.12/library/typing.html#typing.Sequence>Sequence</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-internal" title=" ComponentExtension (django_components.extension.ComponentExtension)" href=#django_components.ComponentExtension>ComponentExtension</a>], <a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" forbidden_static_files
class-attribute
instance-attribute
(django_components.ComponentsSettings.forbidden_static_files)" href=#django_components.ComponentsSettings.forbidden_static_files>forbidden_static_files</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" title=re.Pattern href=https://docs.python.org/3.12/library/re.html#re.Pattern>Pattern</a>]]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" libraries
class-attribute
instance-attribute
(django_components.ComponentsSettings.libraries)" href=#django_components.ComponentsSettings.libraries>libraries</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" multiline_tags
class-attribute
instance-attribute
(django_components.ComponentsSettings.multiline_tags)" href=#django_components.ComponentsSettings.multiline_tags>multiline_tags</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" reload_on_file_change
class-attribute
instance-attribute
(django_components.ComponentsSettings.reload_on_file_change)" href=#django_components.ComponentsSettings.reload_on_file_change>reload_on_file_change</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" reload_on_template_change
class-attribute
instance-attribute
(django_components.ComponentsSettings.reload_on_template_change)" href=#django_components.ComponentsSettings.reload_on_template_change>reload_on_template_change</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" static_files_allowed
class-attribute
instance-attribute
(django_components.ComponentsSettings.static_files_allowed)" href=#django_components.ComponentsSettings.static_files_allowed>static_files_allowed</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" title=re.Pattern href=https://docs.python.org/3.12/library/re.html#re.Pattern>Pattern</a>]]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" static_files_forbidden
class-attribute
instance-attribute
(django_components.ComponentsSettings.static_files_forbidden)" href=#django_components.ComponentsSettings.static_files_forbidden>static_files_forbidden</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>, <a class="autorefs autorefs-external" title=re.Pattern href=https://docs.python.org/3.12/library/re.html#re.Pattern>Pattern</a>]]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" tag_formatter
class-attribute
instance-attribute
(django_components.ComponentsSettings.tag_formatter)" href=#django_components.ComponentsSettings.tag_formatter>tag_formatter</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-internal" title=" TagFormatterABC (django_components.tag_formatter.TagFormatterABC)" href=#django_components.TagFormatterABC>TagFormatterABC</a>, <a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" template_cache_size
class-attribute
instance-attribute
(django_components.ComponentsSettings.template_cache_size)" href=#django_components.ComponentsSettings.template_cache_size>template_cache_size</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#int>int</a>]</code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.app_dirs class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">app_dirs</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.app_dirs class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>app_dirs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Sequence href=https://docs.python.org/3.12/library/typing.html#typing.Sequence>Sequence</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L211 target=_blank>See source code</a></p> <p>Specify the app-level directories that contain your components.</p> <p>Defaults to <code>["components"]</code>. That is, for each Django app, we search <code>&lt;app&gt;/components/</code> for components.</p> <p>The paths must be relative to app, e.g.:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>app_dirs</span><span class=o>=</span><span class=p>[</span><span class=s2>&quot;my_comps&quot;</span><span class=p>],</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> <p>To search for <code>&lt;app&gt;/my_comps/</code>.</p> <p>These locations are searched during <a href=../../concepts/fundamentals/autodiscovery>autodiscovery</a>, or when you <a href=../../concepts/fundamentals/defining_js_css_html_files>define HTML, JS, or CSS as separate files</a>.</p> <p>Set to empty list to disable app-level components:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=n>app_dirs</span><span class=o>=</span><span class=p>[],</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.autodiscover class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">autodiscover</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.autodiscover class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>autodiscover</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L171 target=_blank>See source code</a></p> <p>Toggle whether to run <a href=../../concepts/fundamentals/autodiscovery>autodiscovery</a> at the Django server startup.</p> <p>Defaults to <code>True</code></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>autodiscover</span><span class=o>=</span><span class=kc>False</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.cache class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">cache</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.cache class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>cache</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L239 target=_blank>See source code</a></p> <p>Name of the <a href=https://docs.djangoproject.com/en/5.1/topics/cache/ >Django cache</a> to be used for storing component's JS and CSS files.</p> <p>If <code>None</code>, a <a href=https://docs.djangoproject.com/en/5.1/topics/cache/#local-memory-caching><code>LocMemCache</code></a> is used with default settings.</p> <p>Defaults to <code>None</code>.</p> <p>Read more about <a href=../../guides/setup/caching>caching</a>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>cache</span><span class=o>=</span><span class=s2>&quot;my_cache&quot;</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.context_behavior class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">context_behavior</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.context_behavior class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>context_behavior</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.app_settings.ContextBehaviorType>ContextBehaviorType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L258 target=_blank>See source code</a></p> <p>Configure whether, inside a component template, you can use variables from the outside (<a href=../api#django_components.ContextBehavior.DJANGO><code>"django"</code></a>) or not (<a href=../api#django_components.ContextBehavior.ISOLATED><code>"isolated"</code></a>). This also affects what variables are available inside the <a href=../template_tags#fill><code>{% fill %}</code></a> tags.</p> <p>Also see <a href=../../concepts/fundamentals/component_context_scope#context-behavior>Component context and scope</a>.</p> <p>Defaults to <code>"django"</code>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>context_behavior</span><span class=o>=</span><span class=s2>&quot;isolated&quot;</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> <blockquote> <p>NOTE: <code>context_behavior</code> and <code>slot_context_behavior</code> options were merged in v0.70.</p> <p>If you are migrating from BEFORE v0.67, set <code>context_behavior</code> to <code>"django"</code>. From v0.67 to v0.78 (incl) the default value was <code>"isolated"</code>.</p> <p>For v0.79 and later, the default is again <code>"django"</code>. See the rationale for change <a href=https://github.com/django-components/django-components/issues/498>here</a>.</p> </blockquote> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.debug_highlight_components class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">debug_highlight_components</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.debug_highlight_components class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>debug_highlight_components</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L285 target=_blank>See source code</a></p> <p>Enable / disable component highlighting. See <a href=../../guides/other/troubleshooting#component-highlighting>Troubleshooting</a> for more details.</p> <p>Defaults to <code>False</code>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>debug_highlight_components</span><span class=o>=</span><span class=kc>True</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.debug_highlight_slots class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">debug_highlight_slots</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.debug_highlight_slots class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>debug_highlight_slots</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L299 target=_blank>See source code</a></p> <p>Enable / disable slot highlighting. See <a href=../../guides/other/troubleshooting#slot-highlighting>Troubleshooting</a> for more details.</p> <p>Defaults to <code>False</code>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>debug_highlight_slots</span><span class=o>=</span><span class=kc>True</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.dirs class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">dirs</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.dirs class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>dirs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Sequence href=https://docs.python.org/3.12/library/typing.html#typing.Sequence>Sequence</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=os.PathLike href=https://docs.python.org/3.12/library/os.html#os.PathLike>PathLike</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Tuple href=https://docs.python.org/3.12/library/typing.html#typing.Tuple>Tuple</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-external" title=typing.Tuple href=https://docs.python.org/3.12/library/typing.html#typing.Tuple>Tuple</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=os.PathLike href=https://docs.python.org/3.12/library/os.html#os.PathLike>PathLike</a></span><span class=p>]]]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L184 target=_blank>See source code</a></p> <p>Specify the directories that contain your components.</p> <p>Defaults to <code>[Path(settings.BASE_DIR) / "components"]</code>. That is, the root <code>components/</code> app.</p> <p>Directories must be full paths, same as with <a href=https://docs.djangoproject.com/en/5.1/ref/settings/#std-setting-STATICFILES_DIRS>STATICFILES_DIRS</a>.</p> <p>These locations are searched during <a href=../../concepts/fundamentals/autodiscovery>autodiscovery</a>, or when you <a href=../../concepts/fundamentals/defining_js_css_html_files>define HTML, JS, or CSS as separate files</a>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>dirs</span><span class=o>=</span><span class=p>[</span><span class=n>BASE_DIR</span> <span class=o>/</span> <span class=s2>&quot;components&quot;</span><span class=p>],</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> <p>Set to empty list to disable global components directories:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=n>dirs</span><span class=o>=</span><span class=p>[],</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.dynamic_component_name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">dynamic_component_name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.dynamic_component_name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>dynamic_component_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L313 target=_blank>See source code</a></p> <p>By default, the <a href=../components#django_components.components.dynamic.DynamicComponent>dynamic component</a> is registered under the name <code>"dynamic"</code>.</p> <p>In case of a conflict, you can use this setting to change the component name used for the dynamic components.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># settings.py</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>dynamic_component_name</span><span class=o>=</span><span class=s2>&quot;my_dynamic&quot;</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=p>)</span>
</code></pre></div> <p>After which you will be able to use the dynamic component with the new name:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_dynamic&quot;</span> <span class=k>is</span><span class=o>=</span><span class=nv>table_comp</span> <span class=nv>data</span><span class=o>=</span><span class=nv>table_data</span> <span class=nv>headers</span><span class=o>=</span><span class=nv>table_headers</span> <span class=cp>%}</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=x> </span><span class=cp>{%</span> <span class=k>fill</span> <span class=s2>&quot;pagination&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=x> </span><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;pagination&quot;</span> <span class=o>/</span> <span class=cp>%}</span>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=x> </span><span class=cp>{%</span> <span class=k>endfill</span> <span class=cp>%}</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.extensions class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">extensions</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.extensions class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>extensions</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Sequence href=https://docs.python.org/3.12/library/typing.html#typing.Sequence>Sequence</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentExtension (django_components.extension.ComponentExtension)" href=#django_components.ComponentExtension>ComponentExtension</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L152 target=_blank>See source code</a></p> <p>List of <a href=../../concepts/advanced/extensions>extensions</a> to be loaded.</p> <p>The extensions can be specified as:</p> <ul> <li>Python import path, e.g. <code>"path.to.my_extension.MyExtension"</code>.</li> <li>Extension class, e.g. <code>my_extension.MyExtension</code>.</li> </ul> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>extensions</span><span class=o>=</span><span class=p>[</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=s2>&quot;path.to.my_extension.MyExtension&quot;</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>StorybookExtension</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=p>],</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.forbidden_static_files class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">forbidden_static_files</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.forbidden_static_files class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>forbidden_static_files</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=re.Pattern href=https://docs.python.org/3.12/library/re.html#re.Pattern>Pattern</a></span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L478 target=_blank>See source code</a></p> <p>Deprecated. Use <a href=../settings/#django_components.app_settings.ComponentsSettings.static_files_forbidden><code>COMPONENTS.static_files_forbidden</code></a> instead.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.libraries class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">libraries</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.libraries class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>libraries</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L339 target=_blank>See source code</a></p> <p>Configure extra python modules that should be loaded.</p> <p>This may be useful if you are not using the <a href=../../concepts/fundamentals/autodiscovery>autodiscovery feature</a>, or you need to load components from non-standard locations. Thus you can have a structure of components that is independent from your apps.</p> <p>Expects a list of python module paths. Defaults to empty list.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>libraries</span><span class=o>=</span><span class=p>[</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=s2>&quot;mysite.components.forms&quot;</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=s2>&quot;mysite.components.buttons&quot;</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=s2>&quot;mysite.components.cards&quot;</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=p>],</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=p>)</span>
</code></pre></div> <p>This would be the equivalent of importing these modules from within Django's <a href=https://docs.djangoproject.com/en/5.1/ref/applications/#django.apps.AppConfig.ready><code>AppConfig.ready()</code></a>:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=k>class</span><span class=w> </span><span class=nc>MyAppConfig</span><span class=p>(</span><span class=n>AppConfig</span><span class=p>):</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=k>def</span><span class=w> </span><span class=nf>ready</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a> <span class=kn>import</span><span class=w> </span><span class=s2>&quot;mysite.components.forms&quot;</span>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a> <span class=kn>import</span><span class=w> </span><span class=s2>&quot;mysite.components.buttons&quot;</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a> <span class=kn>import</span><span class=w> </span><span class=s2>&quot;mysite.components.cards&quot;</span>
</code></pre></div> <h4 id=django_components.ComponentsSettings.libraries--manually-loading-libraries>Manually loading libraries<a class=headerlink href=#django_components.ComponentsSettings.libraries--manually-loading-libraries title="Permanent link">¤</a></h4> <p>In the rare case that you need to manually trigger the import of libraries, you can use the <a href=../api/#django_components.import_libraries><code>import_libraries()</code></a> function:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>import_libraries</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=n>import_libraries</span><span class=p>()</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.multiline_tags class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">multiline_tags</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.multiline_tags class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>multiline_tags</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L384 target=_blank>See source code</a></p> <p>Enable / disable <a href=../../concepts/fundamentals/template_tag_syntax#multiline-tags>multiline support for template tags</a>. If <code>True</code>, template tags like <code>{% component %}</code> or <code>{{ my_var }}</code> can span multiple lines.</p> <p>Defaults to <code>True</code>.</p> <p>Disable this setting if you are making custom modifications to Django's regular expression for parsing templates at <code>django.template.base.tag_re</code>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>multiline_tags</span><span class=o>=</span><span class=kc>False</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.reload_on_file_change class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">reload_on_file_change</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.reload_on_file_change class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>reload_on_file_change</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L408 target=_blank>See source code</a></p> <p>This is relevant if you are using the project structure where HTML, JS, CSS and Python are in separate files and nested in a directory.</p> <p>In this case you may notice that when you are running a development server, the server sometimes does not reload when you change component files.</p> <p>Django's native <a href=https://stackoverflow.com/a/66023029/9788634>live reload</a> logic handles only Python files and HTML template files. It does NOT reload when other file types change or when template files are nested more than one level deep.</p> <p>The setting <code>reload_on_file_change</code> fixes this, reloading the dev server even when your component's HTML, JS, or CSS changes.</p> <p>If <code>True</code>, django_components configures Django to reload when files inside <a href=../settings/#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> or <a href=../settings/#django_components.app_settings.ComponentsSettings.app_dirs><code>COMPONENTS.app_dirs</code></a> change.</p> <p>See <a href=../../guides/setup/development_server/#reload-dev-server-on-component-file-changes>Reload dev server on component file changes</a>.</p> <p>Defaults to <code>False</code>.</p> <div class="admonition warning"> <p class=admonition-title>Warning</p> <p>This setting should be enabled only for the dev environment!</p> </div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.reload_on_template_change class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">reload_on_template_change</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.reload_on_template_change class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>reload_on_template_change</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L403 target=_blank>See source code</a></p> <p>Deprecated. Use <a href=../settings/#django_components.app_settings.ComponentsSettings.reload_on_file_change><code>COMPONENTS.reload_on_file_change</code></a> instead.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.static_files_allowed class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">static_files_allowed</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.static_files_allowed class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>static_files_allowed</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=re.Pattern href=https://docs.python.org/3.12/library/re.html#re.Pattern>Pattern</a></span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L438 target=_blank>See source code</a></p> <p>A list of file extensions (including the leading dot) that define which files within <a href=../settings/#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> or <a href=../settings/#django_components.app_settings.ComponentsSettings.app_dirs><code>COMPONENTS.app_dirs</code></a> are treated as <a href=https://docs.djangoproject.com/en/5.1/howto/static-files/ >static files</a>.</p> <p>If a file is matched against any of the patterns, it's considered a static file. Such files are collected when running <a href=https://docs.djangoproject.com/en/5.1/ref/contrib/staticfiles/#collectstatic><code>collectstatic</code></a>, and can be accessed under the <a href=https://docs.djangoproject.com/en/5.1/ref/settings/#static-url>static file endpoint</a>.</p> <p>You can also pass in compiled regexes (<a href=https://docs.python.org/3/library/re.html#re.Pattern><code>re.Pattern</code></a>) for more advanced patterns.</p> <p>By default, JS, CSS, and common image and font file formats are considered static files:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>static_files_allowed</span><span class=o>=</span><span class=p>[</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=s2>&quot;.css&quot;</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=s2>&quot;.js&quot;</span><span class=p>,</span> <span class=s2>&quot;.jsx&quot;</span><span class=p>,</span> <span class=s2>&quot;.ts&quot;</span><span class=p>,</span> <span class=s2>&quot;.tsx&quot;</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=c1># Images</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=s2>&quot;.apng&quot;</span><span class=p>,</span> <span class=s2>&quot;.png&quot;</span><span class=p>,</span> <span class=s2>&quot;.avif&quot;</span><span class=p>,</span> <span class=s2>&quot;.gif&quot;</span><span class=p>,</span> <span class=s2>&quot;.jpg&quot;</span><span class=p>,</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=s2>&quot;.jpeg&quot;</span><span class=p>,</span> <span class=s2>&quot;.jfif&quot;</span><span class=p>,</span> <span class=s2>&quot;.pjpeg&quot;</span><span class=p>,</span> <span class=s2>&quot;.pjp&quot;</span><span class=p>,</span> <span class=s2>&quot;.svg&quot;</span><span class=p>,</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=s2>&quot;.webp&quot;</span><span class=p>,</span> <span class=s2>&quot;.bmp&quot;</span><span class=p>,</span> <span class=s2>&quot;.ico&quot;</span><span class=p>,</span> <span class=s2>&quot;.cur&quot;</span><span class=p>,</span> <span class=s2>&quot;.tif&quot;</span><span class=p>,</span> <span class=s2>&quot;.tiff&quot;</span><span class=p>,</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=c1># Fonts</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=s2>&quot;.eot&quot;</span><span class=p>,</span> <span class=s2>&quot;.ttf&quot;</span><span class=p>,</span> <span class=s2>&quot;.woff&quot;</span><span class=p>,</span> <span class=s2>&quot;.otf&quot;</span><span class=p>,</span> <span class=s2>&quot;.svg&quot;</span><span class=p>,</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a> <span class=p>],</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=p>)</span>
</code></pre></div> <div class="admonition warning"> <p class=admonition-title>Warning</p> <p>Exposing your Python files can be a security vulnerability. See <a href=../../overview/security_notes>Security notes</a>.</p> </div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.static_files_forbidden class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">static_files_forbidden</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.static_files_forbidden class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>static_files_forbidden</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=re.Pattern href=https://docs.python.org/3.12/library/re.html#re.Pattern>Pattern</a></span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L483 target=_blank>See source code</a></p> <p>A list of file extensions (including the leading dot) that define which files within <a href=../settings/#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> or <a href=../settings/#django_components.app_settings.ComponentsSettings.app_dirs><code>COMPONENTS.app_dirs</code></a> will NEVER be treated as <a href=https://docs.djangoproject.com/en/5.1/howto/static-files/ >static files</a>.</p> <p>If a file is matched against any of the patterns, it will never be considered a static file, even if the file matches a pattern in <a href=../settings/#django_components.app_settings.ComponentsSettings.static_files_allowed><code>static_files_allowed</code></a>.</p> <p>Use this setting together with <a href=../settings/#django_components.app_settings.ComponentsSettings.static_files_allowed><code>static_files_allowed</code></a> for a fine control over what file types will be exposed.</p> <p>You can also pass in compiled regexes (<a href=https://docs.python.org/3/library/re.html#re.Pattern><code>re.Pattern</code></a>) for more advanced patterns.</p> <p>By default, any HTML and Python are considered NOT static files:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>static_files_forbidden</span><span class=o>=</span><span class=p>[</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=s2>&quot;.html&quot;</span><span class=p>,</span> <span class=s2>&quot;.django&quot;</span><span class=p>,</span> <span class=s2>&quot;.dj&quot;</span><span class=p>,</span> <span class=s2>&quot;.tpl&quot;</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=c1># Python files</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=s2>&quot;.py&quot;</span><span class=p>,</span> <span class=s2>&quot;.pyc&quot;</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=p>],</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=p>)</span>
</code></pre></div> <div class="admonition warning"> <p class=admonition-title>Warning</p> <p>Exposing your Python files can be a security vulnerability. See <a href=../../overview/security_notes>Security notes</a>.</p> </div> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.tag_formatter class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">tag_formatter</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.tag_formatter class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>tag_formatter</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" TagFormatterABC (django_components.tag_formatter.TagFormatterABC)" href=#django_components.TagFormatterABC>TagFormatterABC</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L520 target=_blank>See source code</a></p> <p>Configure what syntax is used inside Django templates to render components. See the <a href=../tag_formatters>available tag formatters</a>.</p> <p>Defaults to <code>"django_components.component_formatter"</code>.</p> <p>Learn more about <a href=../../concepts/advanced/tag_formatter>Customizing component tags with TagFormatter</a>.</p> <p>Can be set either as direct reference:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>component_formatter</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=s2>&quot;tag_formatter&quot;</span><span class=p>:</span> <span class=n>component_formatter</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=p>)</span>
</code></pre></div> <p>Or as an import string;</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=s2>&quot;tag_formatter&quot;</span><span class=p>:</span> <span class=s2>&quot;django_components.component_formatter&quot;</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=p>)</span>
</code></pre></div> <p><strong>Examples:</strong></p> <ul> <li> <p><code>"django_components.component_formatter"</code></p> <p>Set</p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a> <span class=s2>&quot;tag_formatter&quot;</span><span class=p>:</span> <span class=s2>&quot;django_components.component_formatter&quot;</span>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=p>)</span>
</code></pre></div> <p>To write components like this:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;button&quot;</span> <span class=nv>href</span><span class=o>=</span><span class=s2>&quot;...&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a><span class=x> Click me!</span>
<a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div> </li> <li> <p><code>django_components.component_shorthand_formatter</code></p> <p>Set</p> <div class=highlight><pre><span></span><code><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a> <span class=s2>&quot;tag_formatter&quot;</span><span class=p>:</span> <span class=s2>&quot;django_components.component_shorthand_formatter&quot;</span>
<a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a><span class=p>)</span>
</code></pre></div> <p>To write components like this:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=cp>{%</span> <span class=k>button</span> <span class=nv>href</span><span class=o>=</span><span class=s2>&quot;...&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=x> Click me!</span>
<a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=cp>{%</span> <span class=k>endbutton</span> <span class=cp>%}</span>
</code></pre></div> </li> </ul> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ComponentsSettings.template_cache_size class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">template_cache_size</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ComponentsSettings.template_cache_size class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>template_cache_size</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#int>int</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L586 target=_blank>See source code</a></p> <p>Configure the maximum amount of Django templates to be cached.</p> <p>Defaults to <code>128</code>.</p> <p>Each time a <a href=https://docs.djangoproject.com/en/5.1/ref/templates/api/#django.template.Template>Django template</a> is rendered, it is cached to a global in-memory cache (using Python's <a href=https://docs.python.org/3/library/functools.html#functools.lru_cache><code>lru_cache</code></a> decorator). This speeds up the next render of the component. As the same component is often used many times on the same page, these savings add up.</p> <p>By default the cache holds 128 component templates in memory, which should be enough for most sites. But if you have a lot of components, or if you are overriding <a href=../api#django_components.Component.get_template><code>Component.get_template()</code></a> to render many dynamic templates, you can increase this number.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>template_cache_size</span><span class=o>=</span><span class=mi>256</span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> <p>To remove the cache limit altogether and cache everything, set <code>template_cache_size</code> to <code>None</code>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=n>COMPONENTS</span> <span class=o>=</span> <span class=n>ComponentsSettings</span><span class=p>(</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=n>template_cache_size</span><span class=o>=</span><span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=p>)</span>
</code></pre></div> <p>If you want to add templates to the cache yourself, you can use <a href=../api/#django_components.cached_template><code>cached_template()</code></a>:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>cached_template</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=n>cached_template</span><span class=p>(</span><span class=s2>&quot;Variable: {{ variable }}&quot;</span><span class=p>)</span>
<a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a>
<a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a><span class=c1># You can optionally specify Template class, and other Template inputs:</span>
<a id=__codelineno-2-6 name=__codelineno-2-6 href=#__codelineno-2-6></a><span class=k>class</span><span class=w> </span><span class=nc>MyTemplate</span><span class=p>(</span><span class=n>Template</span><span class=p>):</span>
<a id=__codelineno-2-7 name=__codelineno-2-7 href=#__codelineno-2-7></a> <span class=k>pass</span>
<a id=__codelineno-2-8 name=__codelineno-2-8 href=#__codelineno-2-8></a>
<a id=__codelineno-2-9 name=__codelineno-2-9 href=#__codelineno-2-9></a><span class=n>cached_template</span><span class=p>(</span>
<a id=__codelineno-2-10 name=__codelineno-2-10 href=#__codelineno-2-10></a> <span class=s2>&quot;Variable: {{ variable }}&quot;</span><span class=p>,</span>
<a id=__codelineno-2-11 name=__codelineno-2-11 href=#__codelineno-2-11></a> <span class=n>template_cls</span><span class=o>=</span><span class=n>MyTemplate</span><span class=p>,</span>
<a id=__codelineno-2-12 name=__codelineno-2-12 href=#__codelineno-2-12></a> <span class=n>name</span><span class=o>=...</span>
<a id=__codelineno-2-13 name=__codelineno-2-13 href=#__codelineno-2-13></a> <span class=n>origin</span><span class=o>=...</span>
<a id=__codelineno-2-14 name=__codelineno-2-14 href=#__codelineno-2-14></a> <span class=n>engine</span><span class=o>=...</span>
<a id=__codelineno-2-15 name=__codelineno-2-15 href=#__codelineno-2-15></a><span class=p>)</span>
</code></pre></div> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.ContextBehavior class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ContextBehavior</span> <a href=#django_components.ContextBehavior class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>str</code>, <code>enum.Enum</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L40 target=_blank>See source code</a></p> <p>Configure how (and whether) the context is passed to the component fills and what variables are available inside the <a href=../template_tags#fill><code>{% fill %}</code></a> tags.</p> <p>Also see <a href=../../concepts/fundamentals/component_context_scope#context-behavior>Component context and scope</a>.</p> <p><strong>Options:</strong></p> <ul> <li><code>django</code>: With this setting, component fills behave as usual Django tags.</li> <li><code>isolated</code>: This setting makes the component fills behave similar to Vue or React.</li> </ul> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" DJANGO
class-attribute
instance-attribute
(django_components.ContextBehavior.DJANGO)" href=#django_components.ContextBehavior.DJANGO>DJANGO</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" ISOLATED
class-attribute
instance-attribute
(django_components.ContextBehavior.ISOLATED)" href=#django_components.ContextBehavior.ISOLATED>ISOLATED</a></code></b> <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ContextBehavior.DJANGO class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">DJANGO</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ContextBehavior.DJANGO class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>DJANGO</span> <span class=o>=</span> <span class=s1>&#39;django&#39;</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L53 target=_blank>See source code</a></p> <p>With this setting, component fills behave as usual Django tags. That is, they enrich the context, and pass it along.</p> <ol> <li>Component fills use the context of the component they are within.</li> <li>Variables from <a href=../api#django_components.Component.get_context_data><code>Component.get_context_data()</code></a> are available to the component fill.</li> </ol> <p><strong>Example:</strong></p> <p>Given this template <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>with</span> <span class=nv>cheese</span><span class=o>=</span><span class=s2>&quot;feta&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=x> </span><span class=cp>{%</span> <span class=k>component</span> <span class=s1>&#39;my_comp&#39;</span> <span class=cp>%}</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=x> </span><span class=cp>{{</span> <span class=nv>my_var</span> <span class=cp>}}</span><span class=x> # my_var</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=x> </span><span class=cp>{{</span> <span class=nv>cheese</span> <span class=cp>}}</span><span class=x> # cheese</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=x> </span><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=cp>{%</span> <span class=k>endwith</span> <span class=cp>%}</span>
</code></pre></div></p> <p>and this context returned from the <code>Component.get_context_data()</code> method <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span> <span class=s2>&quot;my_var&quot;</span><span class=p>:</span> <span class=mi>123</span> <span class=p>}</span>
</code></pre></div></p> <p>Then if component "my_comp" defines context <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span> <span class=s2>&quot;my_var&quot;</span><span class=p>:</span> <span class=mi>456</span> <span class=p>}</span>
</code></pre></div></p> <p>Then this will render: <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=x>456 # my_var</span>
<a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a><span class=x>feta # cheese</span>
</code></pre></div></p> <p>Because "my_comp" overrides the variable "my_var", so <code>{{ my_var }}</code> equals <code>456</code>.</p> <p>And variable "cheese" will equal <code>feta</code>, because the fill CAN access the current context.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.ContextBehavior.ISOLATED class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">ISOLATED</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.ContextBehavior.ISOLATED class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>ISOLATED</span> <span class=o>=</span> <span class=s1>&#39;isolated&#39;</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/app_settings.py#L97 target=_blank>See source code</a></p> <p>This setting makes the component fills behave similar to Vue or React, where the fills use EXCLUSIVELY the context variables defined in <a href=../api#django_components.Component.get_context_data><code>Component.get_context_data()</code></a>.</p> <p><strong>Example:</strong></p> <p>Given this template <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>with</span> <span class=nv>cheese</span><span class=o>=</span><span class=s2>&quot;feta&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=x> </span><span class=cp>{%</span> <span class=k>component</span> <span class=s1>&#39;my_comp&#39;</span> <span class=cp>%}</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=x> </span><span class=cp>{{</span> <span class=nv>my_var</span> <span class=cp>}}</span><span class=x> # my_var</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=x> </span><span class=cp>{{</span> <span class=nv>cheese</span> <span class=cp>}}</span><span class=x> # cheese</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=x> </span><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=cp>{%</span> <span class=k>endwith</span> <span class=cp>%}</span>
</code></pre></div></p> <p>and this context returned from the <code>get_context_data()</code> method <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span> <span class=s2>&quot;my_var&quot;</span><span class=p>:</span> <span class=mi>123</span> <span class=p>}</span>
</code></pre></div></p> <p>Then if component "my_comp" defines context <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span> <span class=s2>&quot;my_var&quot;</span><span class=p>:</span> <span class=mi>456</span> <span class=p>}</span>
</code></pre></div></p> <p>Then this will render: <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=x>123 # my_var</span>
<a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a><span class=x> # cheese</span>
</code></pre></div></p> <p>Because both variables "my_var" and "cheese" are taken from the root context. Since "cheese" is not defined in root context, it's empty.</p> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.Default class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">Default</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small> </span> <a href=#django_components.Default class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>Default</span><span class=p>(</span><span class=n>value</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[],</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>])</span>
</code></pre></div> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>object</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extensions/defaults.py#L22 target=_blank>See source code</a></p> <p>Use this class to mark a field on the <code>Component.Defaults</code> class as a factory.</p> <p>Read more about <a href=../../concepts/fundamentals/component_defaults>Component defaults</a>.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Default</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>class</span><span class=w> </span><span class=nc>Defaults</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=c1># Plain value doesn&#39;t need a factory</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>position</span> <span class=o>=</span> <span class=s2>&quot;left&quot;</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=c1># Lists and dicts need to be wrapped in `Default`</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=c1># Otherwise all instances will share the same value</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=n>selected_items</span> <span class=o>=</span> <span class=n>Default</span><span class=p>(</span><span class=k>lambda</span><span class=p>:</span> <span class=p>[</span><span class=mi>1</span><span class=p>,</span> <span class=mi>2</span><span class=p>,</span> <span class=mi>3</span><span class=p>])</span>
</code></pre></div> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" value
instance-attribute
(django_components.Default.value)" href=#django_components.Default.value>value</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a>[[], <a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a>]</code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Default.value class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">value</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Default.value class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>value</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[],</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.EmptyDict class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">EmptyDict</span> <a href=#django_components.EmptyDict class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>dict</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/util/types.py#L75 target=_blank>See source code</a></p> <p>TypedDict with no members.</p> <p>You can use this to define a <a href=../api#django_components.Component>Component</a> that accepts NO kwargs, or NO slots, or returns NO data from <a href=../api#django_components.Component.get_context_data><code>Component.get_context_data()</code></a> / <a href=../api#django_components.Component.get_js_data><code>Component.get_js_data()</code></a> / <a href=../api#django_components.Component.get_css_data><code>Component.get_css_data()</code></a>:</p> <p>Accepts NO kwargs:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>EmptyDict</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>Table</span><span class=p>(</span><span class=n>Component</span><span class=p>(</span><span class=n>Any</span><span class=p>,</span> <span class=n>EmptyDict</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>))</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=o>...</span>
</code></pre></div> <p>Accepts NO slots:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>EmptyDict</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=k>class</span><span class=w> </span><span class=nc>Table</span><span class=p>(</span><span class=n>Component</span><span class=p>(</span><span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>EmptyDict</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>))</span>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a> <span class=o>...</span>
</code></pre></div> <p>Returns NO data from <code>get_context_data()</code>:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>EmptyDict</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=k>class</span><span class=w> </span><span class=nc>Table</span><span class=p>(</span><span class=n>Component</span><span class=p>(</span><span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>EmptyDict</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>))</span>
<a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a> <span class=o>...</span>
</code></pre></div> <p>Going back to the example with NO kwargs, when you then call <a href=../api#django_components.Component.render><code>Component.render()</code></a> or <a href=../api#django_components.Component.render_to_response><code>Component.render_to_response()</code></a>, the <code>kwargs</code> parameter will raise type error if <code>kwargs</code> is anything else than an empty dict.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=n>Table</span><span class=o>.</span><span class=n>render</span><span class=p>(</span>
<a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a> <span class=n>kwargs</span><span class=p>:</span> <span class=p>{},</span>
<a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a><span class=p>)</span>
</code></pre></div> <p>Omitting <code>kwargs</code> is also fine:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=n>Table</span><span class=o>.</span><span class=n>render</span><span class=p>()</span>
</code></pre></div> <p>Other values are not allowed. This will raise an error with MyPy:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=n>Table</span><span class=o>.</span><span class=n>render</span><span class=p>(</span>
<a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a> <span class=n>kwargs</span><span class=p>:</span> <span class=p>{</span>
<a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a> <span class=s2>&quot;one&quot;</span><span class=p>:</span> <span class=mi>2</span><span class=p>,</span>
<a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a> <span class=s2>&quot;three&quot;</span><span class=p>:</span> <span class=mi>4</span><span class=p>,</span>
<a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a> <span class=p>},</span>
<a id=__codelineno-5-6 name=__codelineno-5-6 href=#__codelineno-5-6></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h2 id=django_components.EmptyTuple class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">EmptyTuple</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small> </span> <a href=#django_components.EmptyTuple class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>EmptyTuple</span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-external" title=typing.Tuple href=https://docs.python.org/3.12/library/typing.html#typing.Tuple>Tuple</a></span><span class=p>[]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/util/types.py#L34 target=_blank>See source code</a></p> <p>Tuple with no members.</p> <p>You can use this to define a <a href=../api#django_components.Component>Component</a> that accepts NO positional arguments:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>EmptyTuple</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>Table</span><span class=p>(</span><span class=n>Component</span><span class=p>(</span><span class=n>EmptyTuple</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>,</span> <span class=n>Any</span><span class=p>))</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=o>...</span>
</code></pre></div> <p>After that, when you call <a href=../api#django_components.Component.render><code>Component.render()</code></a> or <a href=../api#django_components.Component.render_to_response><code>Component.render_to_response()</code></a>, the <code>args</code> parameter will raise type error if <code>args</code> is anything else than an empty tuple.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=n>Table</span><span class=o>.</span><span class=n>render</span><span class=p>(</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=n>args</span><span class=p>:</span> <span class=p>(),</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=p>)</span>
</code></pre></div> <p>Omitting <code>args</code> is also fine:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=n>Table</span><span class=o>.</span><span class=n>render</span><span class=p>()</span>
</code></pre></div> <p>Other values are not allowed. This will raise an error with MyPy:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=n>Table</span><span class=o>.</span><span class=n>render</span><span class=p>(</span>
<a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a> <span class=n>args</span><span class=p>:</span> <span class=p>(</span><span class=s2>&quot;one&quot;</span><span class=p>,</span> <span class=mi>2</span><span class=p>,</span> <span class=s2>&quot;three&quot;</span><span class=p>),</span>
<a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.RegistrySettings class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">RegistrySettings</span> <a href=#django_components.RegistrySettings class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>tuple</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L73 target=_blank>See source code</a></p> <p>Configuration for a <a href=../api#django_components.ComponentRegistry><code>ComponentRegistry</code></a>.</p> <p>These settings define how the components registered with this registry will behave when rendered.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>ComponentRegistry</span><span class=p>,</span> <span class=n>RegistrySettings</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>registry_settings</span> <span class=o>=</span> <span class=n>RegistrySettings</span><span class=p>(</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>context_behavior</span><span class=o>=</span><span class=s2>&quot;django&quot;</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>tag_formatter</span><span class=o>=</span><span class=s2>&quot;django_components.component_shorthand_formatter&quot;</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=p>)</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=n>registry</span> <span class=o>=</span> <span class=n>ComponentRegistry</span><span class=p>(</span><span class=n>settings</span><span class=o>=</span><span class=n>registry_settings</span><span class=p>)</span>
</code></pre></div> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" CONTEXT_BEHAVIOR
class-attribute
instance-attribute
(django_components.RegistrySettings.CONTEXT_BEHAVIOR)" href=#django_components.RegistrySettings.CONTEXT_BEHAVIOR>CONTEXT_BEHAVIOR</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<span title=django_components.app_settings.ContextBehaviorType>ContextBehaviorType</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" TAG_FORMATTER
class-attribute
instance-attribute
(django_components.RegistrySettings.TAG_FORMATTER)" href=#django_components.RegistrySettings.TAG_FORMATTER>TAG_FORMATTER</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-internal" title=" TagFormatterABC (django_components.tag_formatter.TagFormatterABC)" href=#django_components.TagFormatterABC>TagFormatterABC</a>, <a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" context_behavior
class-attribute
instance-attribute
(django_components.RegistrySettings.context_behavior)" href=#django_components.RegistrySettings.context_behavior>context_behavior</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<span title=django_components.app_settings.ContextBehaviorType>ContextBehaviorType</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" tag_formatter
class-attribute
instance-attribute
(django_components.RegistrySettings.tag_formatter)" href=#django_components.RegistrySettings.tag_formatter>tag_formatter</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a>[<a class="autorefs autorefs-internal" title=" TagFormatterABC (django_components.tag_formatter.TagFormatterABC)" href=#django_components.TagFormatterABC>TagFormatterABC</a>, <a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]]</code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.RegistrySettings.CONTEXT_BEHAVIOR class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">CONTEXT_BEHAVIOR</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.RegistrySettings.CONTEXT_BEHAVIOR class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>CONTEXT_BEHAVIOR</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.app_settings.ContextBehaviorType>ContextBehaviorType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L103 target=_blank>See source code</a></p> <p><em>Deprecated. Use <code>context_behavior</code> instead. Will be removed in v1.</em></p> <p>Same as the global <a href=../settings#django_components.app_settings.ComponentsSettings.context_behavior><code>COMPONENTS.context_behavior</code></a> setting, but for this registry.</p> <p>If omitted, defaults to the global <a href=../settings#django_components.app_settings.ComponentsSettings.context_behavior><code>COMPONENTS.context_behavior</code></a> setting.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.RegistrySettings.TAG_FORMATTER class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">TAG_FORMATTER</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.RegistrySettings.TAG_FORMATTER class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>TAG_FORMATTER</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" TagFormatterABC (django_components.tag_formatter.TagFormatterABC)" href=#django_components.TagFormatterABC>TagFormatterABC</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L128 target=_blank>See source code</a></p> <p><em>Deprecated. Use <code>tag_formatter</code> instead. Will be removed in v1.</em></p> <p>Same as the global <a href=../settings#django_components.app_settings.ComponentsSettings.tag_formatter><code>COMPONENTS.tag_formatter</code></a> setting, but for this registry.</p> <p>If omitted, defaults to the global <a href=../settings#django_components.app_settings.ComponentsSettings.tag_formatter><code>COMPONENTS.tag_formatter</code></a> setting.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.RegistrySettings.context_behavior class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">context_behavior</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.RegistrySettings.context_behavior class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>context_behavior</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django_components.app_settings.ContextBehaviorType>ContextBehaviorType</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L91 target=_blank>See source code</a></p> <p>Same as the global <a href=../settings#django_components.app_settings.ComponentsSettings.context_behavior><code>COMPONENTS.context_behavior</code></a> setting, but for this registry.</p> <p>If omitted, defaults to the global <a href=../settings#django_components.app_settings.ComponentsSettings.context_behavior><code>COMPONENTS.context_behavior</code></a> setting.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.RegistrySettings.tag_formatter class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">tag_formatter</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.RegistrySettings.tag_formatter class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>tag_formatter</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" TagFormatterABC (django_components.tag_formatter.TagFormatterABC)" href=#django_components.TagFormatterABC>TagFormatterABC</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L116 target=_blank>See source code</a></p> <p>Same as the global <a href=../settings#django_components.app_settings.ComponentsSettings.tag_formatter><code>COMPONENTS.tag_formatter</code></a> setting, but for this registry.</p> <p>If omitted, defaults to the global <a href=../settings#django_components.app_settings.ComponentsSettings.tag_formatter><code>COMPONENTS.tag_formatter</code></a> setting.</p> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.Slot class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">Slot</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small> </span> <a href=#django_components.Slot class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>Slot</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>content_func</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" SlotFunc (django_components.slots.SlotFunc)" href=#django_components.SlotFunc>SlotFunc</a></span><span class=p>[</span><span class=n><span title=django_components.slots.TSlotData>TSlotData</span></span><span class=p>],</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>escaped</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span> <span class=o>=</span> <span class=kc>False</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>component_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>slot_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>nodelist</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.template.base.NodeList>NodeList</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=p>)</span>
</code></pre></div> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>typing.Generic</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/slots.py#L59 target=_blank>See source code</a></p> <p>This class holds the slot content function along with related metadata.</p> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" component_name
class-attribute
instance-attribute
(django_components.Slot.component_name)" href=#django_components.Slot.component_name>component_name</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" content_func
instance-attribute
(django_components.Slot.content_func)" href=#django_components.Slot.content_func>content_func</a></code></b> (<code><a class="autorefs autorefs-internal" title=" SlotFunc (django_components.slots.SlotFunc)" href=#django_components.SlotFunc>SlotFunc</a>[<span title=django_components.slots.TSlotData>TSlotData</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" do_not_call_in_templates
property
(django_components.Slot.do_not_call_in_templates)" href=#django_components.Slot.do_not_call_in_templates>do_not_call_in_templates</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" escaped
class-attribute
instance-attribute
(django_components.Slot.escaped)" href=#django_components.Slot.escaped>escaped</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" nodelist
class-attribute
instance-attribute
(django_components.Slot.nodelist)" href=#django_components.Slot.nodelist>nodelist</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<span title=django.template.base.NodeList>NodeList</span>]</code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" slot_name
class-attribute
instance-attribute
(django_components.Slot.slot_name)" href=#django_components.Slot.slot_name>slot_name</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Slot.component_name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">component_name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Slot.component_name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>component_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/slots.py#L68 target=_blank>See source code</a></p> <p>Name of the component that originally defined or accepted this slot fill.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Slot.content_func class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">content_func</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Slot.content_func class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>content_func</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" SlotFunc (django_components.slots.SlotFunc)" href=#django_components.SlotFunc>SlotFunc</a></span><span class=p>[</span><span class=n><span title=django_components.slots.TSlotData>TSlotData</span></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Slot.do_not_call_in_templates class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">do_not_call_in_templates</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.Slot.do_not_call_in_templates class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>do_not_call_in_templates</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span>
</code></pre></div> <div class="doc doc-contents "> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Slot.escaped class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">escaped</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Slot.escaped class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>escaped</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span> <span class=o>=</span> <span class=kc>False</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/slots.py#L64 target=_blank>See source code</a></p> <p>Whether the slot content has been escaped.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Slot.nodelist class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">nodelist</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Slot.nodelist class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>nodelist</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.template.base.NodeList>NodeList</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/slots.py#L72 target=_blank>See source code</a></p> <p>Nodelist of the slot content.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.Slot.slot_name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">slot_name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.Slot.slot_name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>slot_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/slots.py#L70 target=_blank>See source code</a></p> <p>Name of the slot that originally defined or accepted this slot fill.</p> </div> </div> </div> </div> </div> <div class="doc doc-object doc-attribute"> <h2 id=django_components.SlotContent class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">SlotContent</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small> </span> <a href=#django_components.SlotContent class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>SlotContent</span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" SlotResult
module-attribute
(django_components.slots.SlotResult)" href=#django_components.SlotResult>SlotResult</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-internal" title=" SlotFunc (django_components.slots.SlotFunc)" href=#django_components.SlotFunc>SlotFunc</a></span><span class=p>[</span><span class=n><span title=django_components.slots.TSlotData>TSlotData</span></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-internal" title=" Slot
dataclass
(django_components.slots.Slot)" href=#django_components.Slot>Slot</a></span><span class=p>[</span><span class=n><span title=django_components.slots.TSlotData>TSlotData</span></span><span class=p>]]</span>
</code></pre></div> <div class="doc doc-contents first"> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.SlotFunc class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">SlotFunc</span> <a href=#django_components.SlotFunc class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <div class="doc doc-children"> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.SlotRef class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">SlotRef</span> <a href=#django_components.SlotRef class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>SlotRef</span><span class=p>(</span><span class=n>slot</span><span class=p>:</span> <span class=n><span title=django_components.slots.SlotNode>SlotNode</span></span><span class=p>,</span> <span class=n>context</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=django.template.Context href=https://docs.djangoproject.com/en/5.0/_objects/ref/templates/api/#django.template.Context>Context</a></span><span class=p>)</span>
</code></pre></div> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>object</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/slots.py#L124 target=_blank>See source code</a></p> <p>SlotRef allows to treat a slot as a variable. The slot is rendered only once the instance is coerced to string.</p> <p>This is used to access slots as variables inside the templates. When a SlotRef is rendered in the template with <code>{{ my_lazy_slot }}</code>, it will output the contents of the slot.</p> <div class="doc doc-children"> </div> </div> </div> <div class="doc doc-object doc-attribute"> <h2 id=django_components.SlotResult class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">SlotResult</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small> </span> <a href=#django_components.SlotResult class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>SlotResult</span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=django.utils.safestring.SafeString href=https://docs.djangoproject.com/en/5.0/_objects/ref/utils/#django.utils.safestring.SafeString>SafeString</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.TagFormatterABC class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">TagFormatterABC</span> <a href=#django_components.TagFormatterABC class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>abc.ABC</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/tag_formatter.py#L53 target=_blank>See source code</a></p> <p>Abstract base class for defining custom tag formatters.</p> <p>Tag formatters define how the component tags are used in the template.</p> <p>Read more about <a href=../../concepts/advanced/tag_formatter>Tag formatter</a>.</p> <p>For example, with the default tag formatter (<a href=../tag_formatters#django_components.tag_formatter.ComponentFormatter><code>ComponentFormatter</code></a>), components are written as:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;comp_name&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div> <p>While with the shorthand tag formatter (<a href=../tag_formatters#django_components.tag_formatter.ShorthandComponentFormatter><code>ShorthandComponentFormatter</code></a>), components are written as: <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=cp>{%</span> <span class=k>comp_name</span> <span class=cp>%}</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=cp>{%</span> <span class=k>endcomp_name</span> <span class=cp>%}</span>
</code></pre></div></p> <p><strong>Example:</strong></p> <p>Implementation for <code>ShorthandComponentFormatter</code>:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=kn>from</span><span class=w> </span><span class=nn>djagno_components</span><span class=w> </span><span class=kn>import</span> <span class=n>TagFormatterABC</span><span class=p>,</span> <span class=n>TagResult</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=k>class</span><span class=w> </span><span class=nc>ShorthandComponentFormatter</span><span class=p>(</span><span class=n>TagFormatterABC</span><span class=p>):</span>
<a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a> <span class=k>def</span><span class=w> </span><span class=nf>start_tag</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=nb>str</span><span class=p>:</span>
<a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a> <span class=k>return</span> <span class=n>name</span>
<a id=__codelineno-2-6 name=__codelineno-2-6 href=#__codelineno-2-6></a>
<a id=__codelineno-2-7 name=__codelineno-2-7 href=#__codelineno-2-7></a> <span class=k>def</span><span class=w> </span><span class=nf>end_tag</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=nb>str</span><span class=p>:</span>
<a id=__codelineno-2-8 name=__codelineno-2-8 href=#__codelineno-2-8></a> <span class=k>return</span> <span class=sa>f</span><span class=s2>&quot;end</span><span class=si>{</span><span class=n>name</span><span class=si>}</span><span class=s2>&quot;</span>
<a id=__codelineno-2-9 name=__codelineno-2-9 href=#__codelineno-2-9></a>
<a id=__codelineno-2-10 name=__codelineno-2-10 href=#__codelineno-2-10></a> <span class=k>def</span><span class=w> </span><span class=nf>parse</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>tokens</span><span class=p>:</span> <span class=n>List</span><span class=p>[</span><span class=nb>str</span><span class=p>])</span> <span class=o>-&gt;</span> <span class=n>TagResult</span><span class=p>:</span>
<a id=__codelineno-2-11 name=__codelineno-2-11 href=#__codelineno-2-11></a> <span class=n>tokens</span> <span class=o>=</span> <span class=p>[</span><span class=o>*</span><span class=n>tokens</span><span class=p>]</span>
<a id=__codelineno-2-12 name=__codelineno-2-12 href=#__codelineno-2-12></a> <span class=n>name</span> <span class=o>=</span> <span class=n>tokens</span><span class=o>.</span><span class=n>pop</span><span class=p>(</span><span class=mi>0</span><span class=p>)</span>
<a id=__codelineno-2-13 name=__codelineno-2-13 href=#__codelineno-2-13></a> <span class=k>return</span> <span class=n>TagResult</span><span class=p>(</span><span class=n>name</span><span class=p>,</span> <span class=n>tokens</span><span class=p>)</span>
</code></pre></div> <p><span class=doc-section-title>Methods:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" end_tag
abstractmethod
(django_components.TagFormatterABC.end_tag)" href=#django_components.TagFormatterABC.end_tag>end_tag</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" parse
abstractmethod
(django_components.TagFormatterABC.parse)" href=#django_components.TagFormatterABC.parse>parse</a></code></b> <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" start_tag
abstractmethod
(django_components.TagFormatterABC.start_tag)" href=#django_components.TagFormatterABC.start_tag>start_tag</a></code></b> <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-function"> <h3 id=django_components.TagFormatterABC.end_tag class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">end_tag</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small> </span> <a href=#django_components.TagFormatterABC.end_tag class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>end_tag</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/tag_formatter.py#L112 target=_blank>See source code</a></p> <p>Formats the end tag of a block component.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>name</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> <p>Component's registered name. Required.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>str</code></b> ( <code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code> ) <div class=doc-md-description> <p>The formatted end tag.</p> </div> </li> </ul> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.TagFormatterABC.parse class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">parse</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small> </span> <a href=#django_components.TagFormatterABC.parse class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>parse</span><span class=p>(</span><span class=n>tokens</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>])</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-internal" title=" TagResult (django_components.tag_formatter.TagResult)" href=#django_components.TagResult>TagResult</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/tag_formatter.py#L125 target=_blank>See source code</a></p> <p>Given the tokens (words) passed to a component start tag, this function extracts the component name from the tokens list, and returns <a href=../api#django_components.TagResult><code>TagResult</code></a>, which is a tuple of <code>(component_name, remaining_tokens)</code>.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>tokens</code></b> (<code>[List(str]</code>) <div class=doc-md-description> <p>List of tokens passed to the component tag.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>TagResult</code></b> ( <code><a class="autorefs autorefs-internal" title=" TagResult (django_components.tag_formatter.TagResult)" href=#django_components.TagResult>TagResult</a></code> ) <div class=doc-md-description> <p>Parsed component name and remaining tokens.</p> </div> </li> </ul> <p><strong>Example:</strong></p> <p>Assuming we used a component in a template like this:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_comp&quot;</span> <span class=nv>key</span><span class=o>=</span><span class=nv>val</span> <span class=nv>key2</span><span class=o>=</span><span class=nv>val2</span> <span class=cp>%}</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=cp>{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div> <p>This function receives a list of tokens:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>[</span><span class=s1>&#39;component&#39;</span><span class=p>,</span> <span class=s1>&#39;&quot;my_comp&quot;&#39;</span><span class=p>,</span> <span class=s1>&#39;key=val&#39;</span><span class=p>,</span> <span class=s1>&#39;key2=val2&#39;</span><span class=p>]</span>
</code></pre></div> <ul> <li><code>component</code> is the tag name, which we drop.</li> <li><code>"my_comp"</code> is the component name, but we must remove the extra quotes.</li> <li>The remaining tokens we pass unmodified, as that's the input to the component.</li> </ul> <p>So in the end, we return:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=n>TagResult</span><span class=p>(</span><span class=s1>&#39;my_comp&#39;</span><span class=p>,</span> <span class=p>[</span><span class=s1>&#39;key=val&#39;</span><span class=p>,</span> <span class=s1>&#39;key2=val2&#39;</span><span class=p>])</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.TagFormatterABC.start_tag class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">start_tag</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small> </span> <a href=#django_components.TagFormatterABC.start_tag class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>start_tag</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/tag_formatter.py#L99 target=_blank>See source code</a></p> <p>Formats the start tag of a component.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>name</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> <p>Component's registered name. Required.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>str</code></b> ( <code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code> ) <div class=doc-md-description> <p>The formatted start tag.</p> </div> </li> </ul> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.TagResult class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">TagResult</span> <a href=#django_components.TagResult class=headerlink title="Permanent link">¤</a></h2> <div class="doc doc-contents first"> <p class="doc doc-class-bases">Bases: <code>tuple</code></p> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/tag_formatter.py#L19 target=_blank>See source code</a></p> <p>The return value from <a href=../api#django_components.TagFormatterABC.parse><code>TagFormatter.parse()</code></a>.</p> <p>Read more about <a href=../../concepts/advanced/tag_formatter>Tag formatter</a>.</p> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" component_name
instance-attribute
(django_components.TagResult.component_name)" href=#django_components.TagResult.component_name>component_name</a></code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=" tokens
instance-attribute
(django_components.TagResult.tokens)" href=#django_components.TagResult.tokens>tokens</a></code></b> (<code><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>) <div class=doc-md-description> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.TagResult.component_name class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">component_name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.TagResult.component_name class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>component_name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/tag_formatter.py#L26 target=_blank>See source code</a></p> <p>Component name extracted from the template tag</p> <p>For example, if we had tag</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_comp&quot;</span> <span class=nv>key</span><span class=o>=</span><span class=nv>val</span> <span class=nv>key2</span><span class=o>=</span><span class=nv>val2</span> <span class=cp>%}</span>
</code></pre></div> <p>Then <code>component_name</code> would be <code>my_comp</code>.</p> </div> </div> <div class="doc doc-object doc-attribute"> <h3 id=django_components.TagResult.tokens class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">tokens</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href=#django_components.TagResult.tokens class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>tokens</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/tag_formatter.py#L39 target=_blank>See source code</a></p> <p>Remaining tokens (words) that were passed to the tag, with component name removed</p> <p>For example, if we had tag</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_comp&quot;</span> <span class=nv>key</span><span class=o>=</span><span class=nv>val</span> <span class=nv>key2</span><span class=o>=</span><span class=nv>val2</span> <span class=cp>%}</span>
</code></pre></div> <p>Then <code>tokens</code> would be <code>['key=val', 'key2=val2']</code>.</p> </div> </div> </div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.all_components class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">all_components</span> <a href=#django_components.all_components class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>all_components</span><span class=p>()</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>]]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L125 target=_blank>See source code</a></p> <p>Get a list of all created <a href=../api#django_components.Component><code>Component</code></a> classes.</p> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.all_registries class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">all_registries</span> <a href=#django_components.all_registries class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>all_registries</span><span class=p>()</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentRegistry (django_components.component_registry.ComponentRegistry)" href=#django_components.ComponentRegistry>ComponentRegistry</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L153 target=_blank>See source code</a></p> <p>Get a list of all created <a href=../api#django_components.ComponentRegistry><code>ComponentRegistry</code></a> instances.</p> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.autodiscover class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">autodiscover</span> <a href=#django_components.autodiscover class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>autodiscover</span><span class=p>(</span><span class=n>map_module</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/autodiscovery.py#L14 target=_blank>See source code</a></p> <p>Search for all python files in <a href=../settings#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> and <a href=../settings#django_components.app_settings.ComponentsSettings.app_dirs><code>COMPONENTS.app_dirs</code></a> and import them.</p> <p>See <a href=../../concepts/fundamentals/autodiscovery>Autodiscovery</a>.</p> <p>NOTE: Subdirectories and files starting with an underscore <code>_</code> (except for <code>__init__.py</code> are ignored.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>map_module</code></b> (<code><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a>[[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>], <a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>, default: <code>None</code> ) <div class=doc-md-description> <p>Map the module paths with <code>map_module</code> function. This serves as an escape hatch for when you need to use this function in tests.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <code><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code> <div class=doc-md-description> <p>List[str]: A list of module paths of imported files.</p> </div> </li> </ul> <p>To get the same list of modules that <code>autodiscover()</code> would return, but without importing them, use <a href=../api#django_components.get_component_files><code>get_component_files()</code></a>:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>get_component_files</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>modules</span> <span class=o>=</span> <span class=n>get_component_files</span><span class=p>(</span><span class=s2>&quot;.py&quot;</span><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.cached_template class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">cached_template</span> <a href=#django_components.cached_template class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>cached_template</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>template_string</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n>template_cls</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=django.template.Template href=https://docs.djangoproject.com/en/5.0/_objects/ref/templates/api/#django.template.Template>Template</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=n>origin</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.template.Origin>Origin</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a> <span class=n>engine</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=django.template.Template href=https://docs.djangoproject.com/en/5.0/_objects/ref/templates/api/#django.template.Template>Template</a></span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/template.py#L12 target=_blank>See source code</a></p> <p>Create a Template instance that will be cached as per the <a href=../settings#django_components.app_settings.ComponentsSettings.template_cache_size><code>COMPONENTS.template_cache_size</code></a> setting.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>template_string</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> <p>Template as a string, same as the first argument to Django's <a href=https://docs.djangoproject.com/en/5.1/topics/templates/#template><code>Template</code></a>. Required.</p> </div> </li> <li class="doc-section-item field-body"> <b><code>template_cls</code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-external" title=django.template.Template href=https://docs.djangoproject.com/en/5.0/_objects/ref/templates/api/#django.template.Template>Template</a>]</code>, default: <code>None</code> ) <div class=doc-md-description> <p>Specify the Template class that should be instantiated. Defaults to Django's <a href=https://docs.djangoproject.com/en/5.1/topics/templates/#template><code>Template</code></a> class.</p> </div> </li> <li class="doc-section-item field-body"> <b><code>origin</code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<span title=django.template.Origin>Origin</span>]</code>, default: <code>None</code> ) <div class=doc-md-description> <p>Sets <a href=https://docs.djangoproject.com/en/5.1/howto/custom-template-backend/#origin-api-and-3rd-party-integration><code>Template.Origin</code></a>.</p> </div> </li> <li class="doc-section-item field-body"> <b><code>name</code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>, default: <code>None</code> ) <div class=doc-md-description> <p>Sets <code>Template.name</code></p> </div> </li> <li class="doc-section-item field-body"> <b><code>engine</code></b> (<code><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a>[<a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a>]</code>, default: <code>None</code> ) <div class=doc-md-description> <p>Sets <code>Template.engine</code></p> </div> </li> </ul> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>cached_template</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>template</span> <span class=o>=</span> <span class=n>cached_template</span><span class=p>(</span><span class=s2>&quot;Variable: {{ variable }}&quot;</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=c1># You can optionally specify Template class, and other Template inputs:</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=k>class</span><span class=w> </span><span class=nc>MyTemplate</span><span class=p>(</span><span class=n>Template</span><span class=p>):</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=k>pass</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=n>template</span> <span class=o>=</span> <span class=n>cached_template</span><span class=p>(</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=s2>&quot;Variable: {{ variable }}&quot;</span><span class=p>,</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a> <span class=n>template_cls</span><span class=o>=</span><span class=n>MyTemplate</span><span class=p>,</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a> <span class=n>name</span><span class=o>=...</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a> <span class=n>origin</span><span class=o>=...</span>
<a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a> <span class=n>engine</span><span class=o>=...</span>
<a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.format_attributes class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">format_attributes</span> <a href=#django_components.format_attributes class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>format_attributes</span><span class=p>(</span><span class=n>attributes</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Mapping href=https://docs.python.org/3.12/library/typing.html#typing.Mapping>Mapping</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Any href=https://docs.python.org/3.12/library/typing.html#typing.Any>Any</a></span><span class=p>])</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/attributes.py#L93 target=_blank>See source code</a></p> <p>Format a dict of attributes into an HTML attributes string.</p> <p>Read more about <a href=../../concepts/fundamentals/html_attributes>HTML attributes</a>.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>format_attributes</span><span class=p>({</span><span class=s2>&quot;class&quot;</span><span class=p>:</span> <span class=s2>&quot;my-class&quot;</span><span class=p>,</span> <span class=s2>&quot;data-id&quot;</span><span class=p>:</span> <span class=s2>&quot;123&quot;</span><span class=p>})</span>
</code></pre></div> <p>will return</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=s1>&#39;class=&quot;my-class&quot; data-id=&quot;123&quot;&#39;</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.get_component_by_class_id class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">get_component_by_class_id</span> <a href=#django_components.get_component_by_class_id class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get_component_by_class_id</span><span class=p>(</span><span class=n>comp_cls_id</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component.py#L158 target=_blank>See source code</a></p> <p>Get a component class by its unique ID.</p> <p>Each component class is associated with a unique hash that's derived from its module import path.</p> <p>E.g. <code>path.to.my.secret.MyComponent</code> -&gt; <code>MyComponent_ab01f32</code></p> <p>This hash is available under <a href=../api#django_components.Component.class_id><code>class_id</code></a> on the component class.</p> <p>Raises <code>KeyError</code> if the component class is not found.</p> <p>NOTE: This is mainly intended for extensions.</p> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.get_component_dirs class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">get_component_dirs</span> <a href=#django_components.get_component_dirs class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get_component_dirs</span><span class=p>(</span><span class=n>include_apps</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></span> <span class=o>=</span> <span class=kc>True</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=pathlib.Path href=https://docs.python.org/3.12/library/pathlib.html#pathlib.Path>Path</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/util/loader.py#L13 target=_blank>See source code</a></p> <p>Get directories that may contain component files.</p> <p>This is the heart of all features that deal with filesystem and file lookup. Autodiscovery, Django template resolution, static file resolution - They all use this.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>include_apps</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/functions.html#bool>bool</a></code>, default: <code>True</code> ) <div class=doc-md-description> <p>Include directories from installed Django apps. Defaults to <code>True</code>.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <code><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" title=pathlib.Path href=https://docs.python.org/3.12/library/pathlib.html#pathlib.Path>Path</a>]</code> <div class=doc-md-description> <p>List[Path]: A list of directories that may contain component files.</p> </div> </li> </ul> <p><code>get_component_dirs()</code> searches for dirs set in <a href=../settings#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> settings. If none set, defaults to searching for a <code>"components"</code> app.</p> <p>In addition to that, also all installed Django apps are checked whether they contain directories as set in <a href=../settings#django_components.app_settings.ComponentsSettings.app_dirs><code>COMPONENTS.app_dirs</code></a> (e.g. <code>[app]/components</code>).</p> <p><strong>Notes:</strong></p> <ul> <li> <p>Paths that do not point to directories are ignored.</p> </li> <li> <p><code>BASE_DIR</code> setting is required.</p> </li> <li> <p>The paths in <a href=../settings#django_components.app_settings.ComponentsSettings.dirs><code>COMPONENTS.dirs</code></a> must be absolute paths.</p> </li> </ul> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.get_component_files class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">get_component_files</span> <a href=#django_components.get_component_files class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get_component_files</span><span class=p>(</span><span class=n>suffix</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentFileEntry (django_components.util.loader.ComponentFileEntry)" href=#django_components.ComponentFileEntry>ComponentFileEntry</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/util/loader.py#L122 target=_blank>See source code</a></p> <p>Search for files within the component directories (as defined in <a href=../api#django_components.get_component_dirs><code>get_component_dirs()</code></a>).</p> <p>Requires <code>BASE_DIR</code> setting to be set.</p> <p>Subdirectories and files starting with an underscore <code>_</code> (except <code>__init__.py</code>) are ignored.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>suffix</code></b> (<code><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>, default: <code>None</code> ) <div class=doc-md-description> <p>The suffix to search for. E.g. <code>.py</code>, <code>.js</code>, <code>.css</code>. Defaults to <code>None</code>, which will search for all files.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <code><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-internal" title=" ComponentFileEntry (django_components.util.loader.ComponentFileEntry)" href=#django_components.ComponentFileEntry>ComponentFileEntry</a>]</code> <div class=doc-md-description> <p>List[ComponentFileEntry] A list of entries that contain both the filesystem path and the python import path (dot path).</p> </div> </li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>get_component_files</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>modules</span> <span class=o>=</span> <span class=n>get_component_files</span><span class=p>(</span><span class=s2>&quot;.py&quot;</span><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.get_component_url class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">get_component_url</span> <a href=#django_components.get_component_url class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get_component_url</span><span class=p>(</span><span class=n>component</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>])</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/extensions/url.py#L30 target=_blank>See source code</a></p> <p>Get the URL for a <a href=../api#django_components.Component><code>Component</code></a>.</p> <p>Raises <code>RuntimeError</code> if the component is not public.</p> <p>Read more about <a href=../../concepts/fundamentals/component_views_urls>Component views and URLs</a>.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>get_component_url</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>class</span><span class=w> </span><span class=nc>Url</span><span class=p>:</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>public</span> <span class=o>=</span> <span class=kc>True</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=c1># Get the URL for the component</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=n>url</span> <span class=o>=</span> <span class=n>get_component_url</span><span class=p>(</span><span class=n>MyComponent</span><span class=p>)</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.import_libraries class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">import_libraries</span> <a href=#django_components.import_libraries class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>import_libraries</span><span class=p>(</span><span class=n>map_module</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/autodiscovery.py#L49 target=_blank>See source code</a></p> <p>Import modules set in <a href=../settings#django_components.app_settings.ComponentsSettings.libraries><code>COMPONENTS.libraries</code></a> setting.</p> <p>See <a href=../../concepts/fundamentals/autodiscovery>Autodiscovery</a>.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>map_module</code></b> (<code><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a>[[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>], <a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code>, default: <code>None</code> ) <div class=doc-md-description> <p>Map the module paths with <code>map_module</code> function. This serves as an escape hatch for when you need to use this function in tests.</p> </div> </li> </ul> <p><span class=doc-section-title>Returns:</span></p> <ul> <li class="doc-section-item field-body"> <code><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a>[<a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a>]</code> <div class=doc-md-description> <p>List[str]: A list of module paths of imported files.</p> </div> </li> </ul> <p><strong>Examples:</strong></p> <p>Normal usage - load libraries after Django has loaded <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>import_libraries</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=k>class</span><span class=w> </span><span class=nc>MyAppConfig</span><span class=p>(</span><span class=n>AppConfig</span><span class=p>):</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=k>def</span><span class=w> </span><span class=nf>ready</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=n>import_libraries</span><span class=p>()</span>
</code></pre></div></p> <p>Potential usage in tests <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>import_libraries</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=n>import_libraries</span><span class=p>(</span><span class=k>lambda</span> <span class=n>path</span><span class=p>:</span> <span class=n>path</span><span class=o>.</span><span class=n>replace</span><span class=p>(</span><span class=s2>&quot;tests.&quot;</span><span class=p>,</span> <span class=s2>&quot;myapp.&quot;</span><span class=p>))</span>
</code></pre></div></p> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.merge_attributes class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">merge_attributes</span> <a href=#django_components.merge_attributes class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>merge_attributes</span><span class=p>(</span><span class=o>*</span><span class=n>attrs</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/attributes.py#L131 target=_blank>See source code</a></p> <p>Merge a list of dictionaries into a single dictionary.</p> <p>The dictionaries are treated as HTML attributes and are merged accordingly:</p> <ul> <li>If a same key is present in multiple dictionaries, the values are joined with a space character.</li> <li>The <code>class</code> and <code>style</code> keys are handled specially, similar to <a href=https://vuejs.org/api/render-function#mergeprops>how Vue does it</a>.</li> </ul> <p>Read more about <a href=../../concepts/fundamentals/html_attributes>HTML attributes</a>.</p> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>merge_attributes</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=p>{</span><span class=s2>&quot;my-attr&quot;</span><span class=p>:</span> <span class=s2>&quot;my-value&quot;</span><span class=p>,</span> <span class=s2>&quot;class&quot;</span><span class=p>:</span> <span class=s2>&quot;my-class&quot;</span><span class=p>},</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=p>{</span><span class=s2>&quot;my-attr&quot;</span><span class=p>:</span> <span class=s2>&quot;extra-value&quot;</span><span class=p>,</span> <span class=s2>&quot;data-id&quot;</span><span class=p>:</span> <span class=s2>&quot;123&quot;</span><span class=p>},</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=p>)</span>
</code></pre></div> <p>will result in</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=s2>&quot;my-attr&quot;</span><span class=p>:</span> <span class=s2>&quot;my-value extra-value&quot;</span><span class=p>,</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a> <span class=s2>&quot;class&quot;</span><span class=p>:</span> <span class=s2>&quot;my-class&quot;</span><span class=p>,</span>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a> <span class=s2>&quot;data-id&quot;</span><span class=p>:</span> <span class=s2>&quot;123&quot;</span><span class=p>,</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=p>}</span>
</code></pre></div> <p><strong>The <code>class</code> attribute</strong></p> <p>The <code>class</code> attribute can be given as a string, or a dictionary.</p> <ul> <li>If given as a string, it is used as is.</li> <li>If given as a dictionary, only the keys with a truthy value are used.</li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=n>merge_attributes</span><span class=p>(</span>
<a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a> <span class=p>{</span><span class=s2>&quot;class&quot;</span><span class=p>:</span> <span class=s2>&quot;my-class extra-class&quot;</span><span class=p>},</span>
<a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a> <span class=p>{</span><span class=s2>&quot;class&quot;</span><span class=p>:</span> <span class=p>{</span><span class=s2>&quot;truthy&quot;</span><span class=p>:</span> <span class=kc>True</span><span class=p>,</span> <span class=s2>&quot;falsy&quot;</span><span class=p>:</span> <span class=kc>False</span><span class=p>}},</span>
<a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a><span class=p>)</span>
</code></pre></div> <p>will result in</p> <div class=highlight><pre><span></span><code><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span>
<a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a> <span class=s2>&quot;class&quot;</span><span class=p>:</span> <span class=s2>&quot;my-class extra-class truthy&quot;</span><span class=p>,</span>
<a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a><span class=p>}</span>
</code></pre></div> <p><strong>The <code>style</code> attribute</strong></p> <p>The <code>style</code> attribute can be given as a string, a list, or a dictionary.</p> <ul> <li>If given as a string, it is used as is.</li> <li>If given as a dictionary, it is converted to a style attribute string.</li> </ul> <p><strong>Example:</strong></p> <div class=highlight><pre><span></span><code><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=n>merge_attributes</span><span class=p>(</span>
<a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a> <span class=p>{</span><span class=s2>&quot;style&quot;</span><span class=p>:</span> <span class=s2>&quot;color: red; background-color: blue;&quot;</span><span class=p>},</span>
<a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a> <span class=p>{</span><span class=s2>&quot;style&quot;</span><span class=p>:</span> <span class=p>{</span><span class=s2>&quot;background-color&quot;</span><span class=p>:</span> <span class=s2>&quot;green&quot;</span><span class=p>,</span> <span class=s2>&quot;color&quot;</span><span class=p>:</span> <span class=kc>False</span><span class=p>}},</span>
<a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a><span class=p>)</span>
</code></pre></div> <p>will result in</p> <div class=highlight><pre><span></span><code><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=p>{</span>
<a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a> <span class=s2>&quot;style&quot;</span><span class=p>:</span> <span class=s2>&quot;color: red; background-color: blue; background-color: green;&quot;</span><span class=p>,</span>
<a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=p>}</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.register class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">register</span> <a href=#django_components.register class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>register</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n>registry</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" ComponentRegistry (django_components.component_registry.ComponentRegistry)" href=#django_components.ComponentRegistry>ComponentRegistry</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>[</span><span class=n><span title=django_components.component.ArgsType>ArgsType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.KwargsType>KwargsType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.SlotsType>SlotsType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.DataType>DataType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.JsDataType>JsDataType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.CssDataType>CssDataType</span></span><span class=p>]]],</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=" Component (django_components.component.Component)" href=#django_components.Component>Component</a></span><span class=p>[</span><span class=n><span title=django_components.component.ArgsType>ArgsType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.KwargsType>KwargsType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.SlotsType>SlotsType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.DataType>DataType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.JsDataType>JsDataType</span></span><span class=p>,</span> <span class=n><span title=django_components.component.CssDataType>CssDataType</span></span><span class=p>]],</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L617 target=_blank>See source code</a></p> <p>Class decorator for registering a <a href=./#django_components.Component>component</a> to a <a href=./#django_components.ComponentRegistry>component registry</a>.</p> <p>See <a href=../../concepts/advanced/component_registry>Registering components</a>.</p> <p><span class=doc-section-title>Parameters:</span></p> <ul> <li class="doc-section-item field-body"> <b><code>name</code></b> (<code><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></code>) <div class=doc-md-description> <p>Registered name. This is the name by which the component will be accessed from within a template when using the <a href=../template_tags#component><code>{% component %}</code></a> tag. Required.</p> </div> </li> <li class="doc-section-item field-body"> <b><code>registry</code></b> (<code><a class="autorefs autorefs-internal" title=" ComponentRegistry (django_components.component_registry.ComponentRegistry)" href=#django_components.ComponentRegistry>ComponentRegistry</a></code>, default: <code>None</code> ) <div class=doc-md-description> <p>Specify the <a href=./#django_components.ComponentRegistry>registry</a> to which to register this component. If omitted, component is registered to the default registry.</p> </div> </li> </ul> <p><span class=doc-section-title>Raises:</span></p> <ul> <li class="doc-section-item field-body"> <code><a class="autorefs autorefs-internal" title=" AlreadyRegistered (django_components.component_registry.AlreadyRegistered)" href=../exceptions/#django_components.AlreadyRegistered>AlreadyRegistered</a></code> <div class=doc-md-description> <p>If there is already a component registered under the same name.</p> </div> </li> </ul> <p><strong>Examples</strong>:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>register</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=nd>@register</span><span class=p>(</span><span class=s2>&quot;my_component&quot;</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=o>...</span>
</code></pre></div> <p>Specifing <a href=./#django_components.ComponentRegistry><code>ComponentRegistry</code></a> the component should be registered to by setting the <code>registry</code> kwarg:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django.template</span><span class=w> </span><span class=kn>import</span> <span class=n>Library</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>Component</span><span class=p>,</span> <span class=n>ComponentRegistry</span><span class=p>,</span> <span class=n>register</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=n>my_lib</span> <span class=o>=</span> <span class=n>Library</span><span class=p>()</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=n>my_reg</span> <span class=o>=</span> <span class=n>ComponentRegistry</span><span class=p>(</span><span class=n>library</span><span class=o>=</span><span class=n>my_lib</span><span class=p>)</span>
<a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a>
<a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a><span class=nd>@register</span><span class=p>(</span><span class=s2>&quot;my_component&quot;</span><span class=p>,</span> <span class=n>registry</span><span class=o>=</span><span class=n>my_reg</span><span class=p>)</span>
<a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a><span class=k>class</span><span class=w> </span><span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-9 name=__codelineno-1-9 href=#__codelineno-1-9></a> <span class=o>...</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-attribute"> <h2 id=django_components.registry class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">registry</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small> </span> <a href=#django_components.registry class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>registry</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=" ComponentRegistry (django_components.component_registry.ComponentRegistry)" href=#django_components.ComponentRegistry>ComponentRegistry</a></span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-internal" title=" ComponentRegistry (django_components.component_registry.ComponentRegistry)" href=#django_components.ComponentRegistry>ComponentRegistry</a></span><span class=p>()</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/component_registry.py#L584 target=_blank>See source code</a></p> <p>The default and global <a href=./#django_components.ComponentRegistry>component registry</a>. Use this instance to directly register or remove components:</p> <p>See <a href=../../concepts/advanced/component_registry>Registering components</a>.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># Register components</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;card&quot;</span><span class=p>,</span> <span class=n>CardComponent</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=c1># Get single</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=n>registry</span><span class=o>.</span><span class=n>get</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># Get all</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=n>registry</span><span class=o>.</span><span class=n>all</span><span class=p>()</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=c1># Check if component is registered</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=n>registry</span><span class=o>.</span><span class=n>has</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a>
<a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=c1># Unregister single</span>
<a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=n>registry</span><span class=o>.</span><span class=n>unregister</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a>
<a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a><span class=c1># Unregister all</span>
<a id=__codelineno-0-18 name=__codelineno-0-18 href=#__codelineno-0-18></a><span class=n>registry</span><span class=o>.</span><span class=n>clear</span><span class=p>()</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.render_dependencies class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">render_dependencies</span> <a href=#django_components.render_dependencies class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>render_dependencies</span><span class=p>(</span><span class=n>content</span><span class=p>:</span> <span class=n><span title=django_components.dependencies.TContent>TContent</span></span><span class=p>,</span> <span class=nb>type</span><span class=p>:</span> <span class=n><span title=django_components.dependencies.RenderType>RenderType</span></span> <span class=o>=</span> <span class=s1>&#39;document&#39;</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><span title=django_components.dependencies.TContent>TContent</span></span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/dependencies.py#L366 target=_blank>See source code</a></p> <p>Given a string that contains parts that were rendered by components, this function inserts all used JS and CSS.</p> <p>By default, the string is parsed as an HTML and: - CSS is inserted at the end of <code>&lt;head&gt;</code> (if present) - JS is inserted at the end of <code>&lt;body&gt;</code> (if present)</p> <p>If you used <code>{% component_js_dependencies %}</code> or <code>{% component_css_dependencies %}</code>, then the JS and CSS will be inserted only at these locations.</p> <p>Example: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=k>def</span><span class=w> </span><span class=nf>my_view</span><span class=p>(</span><span class=n>request</span><span class=p>):</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>template</span> <span class=o>=</span> <span class=n>Template</span><span class=p>(</span><span class=s1>&#39;&#39;&#39;</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=s1> {</span><span class=si>% lo</span><span class=s1>ad components %}</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=s1> &lt;!doctype html&gt;</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=s1> &lt;html&gt;</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=s1> &lt;head&gt;&lt;/head&gt;</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=s1> &lt;body&gt;</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=s1> &lt;h1&gt;{{ table_name }}&lt;/h1&gt;</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=s1> {</span><span class=si>% c</span><span class=s1>omponent &quot;table&quot; name=table_name / %}</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=s1> &lt;/body&gt;</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=s1> &lt;/html&gt;</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=s1> &#39;&#39;&#39;</span><span class=p>)</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a>
<a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a> <span class=n>html</span> <span class=o>=</span> <span class=n>template</span><span class=o>.</span><span class=n>render</span><span class=p>(</span>
<a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a> <span class=n>Context</span><span class=p>({</span>
<a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a> <span class=s2>&quot;table_name&quot;</span><span class=p>:</span> <span class=n>request</span><span class=o>.</span><span class=n>GET</span><span class=p>[</span><span class=s2>&quot;name&quot;</span><span class=p>],</span>
<a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a> <span class=p>})</span>
<a id=__codelineno-0-18 name=__codelineno-0-18 href=#__codelineno-0-18></a> <span class=p>)</span>
<a id=__codelineno-0-19 name=__codelineno-0-19 href=#__codelineno-0-19></a>
<a id=__codelineno-0-20 name=__codelineno-0-20 href=#__codelineno-0-20></a> <span class=c1># This inserts components&#39; JS and CSS</span>
<a id=__codelineno-0-21 name=__codelineno-0-21 href=#__codelineno-0-21></a> <span class=n>processed_html</span> <span class=o>=</span> <span class=n>render_dependencies</span><span class=p>(</span><span class=n>html</span><span class=p>)</span>
<a id=__codelineno-0-22 name=__codelineno-0-22 href=#__codelineno-0-22></a>
<a id=__codelineno-0-23 name=__codelineno-0-23 href=#__codelineno-0-23></a> <span class=k>return</span> <span class=n>HttpResponse</span><span class=p>(</span><span class=n>processed_html</span><span class=p>)</span>
</code></pre></div></p> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.template_tag class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">template_tag</span> <a href=#django_components.template_tag class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>template_tag</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>library</span><span class=p>:</span> <span class=n><span title=django.template.Library>Library</span></span><span class=p>,</span> <span class=n>tag</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n>end_tag</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span> <span class=n>allowed_flags</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.List href=https://docs.python.org/3.12/library/typing.html#typing.List>List</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[</span><span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>],</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents first"> <p><a href=https://github.com/django-components/django-components/tree/master/src/django_components/node.py#L392 target=_blank>See source code</a></p> <p>A simplified version of creating a template tag based on <a href=../api#django_components.BaseNode><code>BaseNode</code></a>.</p> <p>Instead of defining the whole class, you can just define the <a href=../api#django_components.BaseNode.render><code>render()</code></a> method.</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=kn>from</span><span class=w> </span><span class=nn>django.template</span><span class=w> </span><span class=kn>import</span> <span class=n>Context</span><span class=p>,</span> <span class=n>Library</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=kn>from</span><span class=w> </span><span class=nn>django_components</span><span class=w> </span><span class=kn>import</span> <span class=n>BaseNode</span><span class=p>,</span> <span class=n>template_tag</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=n>library</span> <span class=o>=</span> <span class=n>Library</span><span class=p>()</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=nd>@template_tag</span><span class=p>(</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a> <span class=n>library</span><span class=p>,</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a> <span class=n>tag</span><span class=o>=</span><span class=s2>&quot;mytag&quot;</span><span class=p>,</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a> <span class=n>end_tag</span><span class=o>=</span><span class=s2>&quot;endmytag&quot;</span><span class=p>,</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a> <span class=n>allowed_flags</span><span class=o>=</span><span class=p>[</span><span class=s2>&quot;required&quot;</span><span class=p>],</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=p>)</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=k>def</span><span class=w> </span><span class=nf>mytag</span><span class=p>(</span><span class=n>node</span><span class=p>:</span> <span class=n>BaseNode</span><span class=p>,</span> <span class=n>context</span><span class=p>:</span> <span class=n>Context</span><span class=p>,</span> <span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>,</span> <span class=o>**</span><span class=n>kwargs</span><span class=p>:</span> <span class=n>Any</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=nb>str</span><span class=p>:</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a> <span class=k>return</span> <span class=sa>f</span><span class=s2>&quot;Hello, </span><span class=si>{</span><span class=n>name</span><span class=si>}</span><span class=s2>!&quot;</span>
</code></pre></div> <p>This will allow the template tag <code>{% mytag %}</code> to be used like this:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=cp>{%</span> <span class=k>mytag</span> <span class=nv>name</span><span class=o>=</span><span class=s2>&quot;John&quot;</span> <span class=cp>%}</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=cp>{%</span> <span class=k>mytag</span> <span class=nv>name</span><span class=o>=</span><span class=s2>&quot;John&quot;</span> <span class=nv>required</span> <span class=cp>%}</span><span class=x> ... </span><span class=cp>{%</span> <span class=k>endmytag</span> <span class=cp>%}</span>
</code></pre></div> <p>The given function will be wrapped in a class that inherits from <a href=../api#django_components.BaseNode><code>BaseNode</code></a>.</p> <p>And this class will be registered with the given library.</p> <p>The function MUST accept at least two positional arguments: <code>node</code> and <code>context</code></p> <ul> <li><code>node</code> is the <a href=../api#django_components.BaseNode><code>BaseNode</code></a> instance.</li> <li><code>context</code> is the <a href=https://docs.djangoproject.com/en/5.1/ref/templates/api/#django.template.Context><code>Context</code></a> of the template.</li> </ul> <p>Any extra parameters defined on this function will be part of the tag's input parameters.</p> <p>For more info, see <a href=../api#django_components.BaseNode.render><code>BaseNode.render()</code></a>.</p> </div> </div> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <nav class="md-footer__inner md-grid" aria-label=Footer> <a href=../../guides/devguides/slots_and_blocks/ class="md-footer__link md-footer__link--prev" aria-label="Previous: Using slot and block tags"> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </div> <div class=md-footer__title> <span class=md-footer__direction> Previous </span> <div class=md-ellipsis> Using slot and block tags </div> </div> </a> <a href=../commands/ class="md-footer__link md-footer__link--next" aria-label="Next: Commands"> <div class=md-footer__title> <span class=md-footer__direction> Next </span> <div class=md-ellipsis> Commands </div> </div> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/django-components/django-components target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href=https://pypi.org/project/django-components/ target=_blank rel=noopener title=pypi.org class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6M286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3M167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4m-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <div class=md-progress data-md-component=progress role=progressbar></div> <script id=__config type=application/json>{"base": "../..", "features": ["content.action.edit", "content.action.view", "content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.expand", "navigation.footer", "navigation.instant", "navigation.instant.progress", "navigation.indexes", "navigation.sections", "navigation.tabs", "navigation.tracking", "navigation.top", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "../../assets/javascripts/workers/search.f8cc74c7.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"alias": true, "default": ["dev"], "provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.c8b220af.min.js></script> <script src=../../assets/_markdown_exec_pyodide.js></script> <script src=../../js/timeago.min.js></script> <script src=../../js/timeago_mkdocs_material.js></script> </body> </html>