May mga oras kung kailan gusto mong gumamit ng ibang template batay sa halaga ng isang header ng kahilingan ng HTTP. Halimbawa, ang iba't ibang mga pangalan ng domain, iba't ibang uri ng browser, o kahit na ang nagre-refer na pahina. Pinapayagan ka ng proyekto dynamicloader mong tukuyin ang isang hiwalay na listahan ng direktoryo sa kung saan Django ay dapat magmukhang para sa mga template, batay sa isang halaga sa header kahilingan.
Pag-install ng
1. I-install `` dynamicloader`` sa iyong Python path.
2. Magdagdag `` 'dynamicloader.middleware.RequestMiddleware', `` sa iyong `` setting MIDDLEWARE_CLASSES``.
3. Magdagdag `` 'dynamicloader.loader.load_template_source', `` sa tuktok * * ng iyong `` setting TEMPLATE_LOADERS``.
4. Lumikha ng isang bagong setting na ito, `` DYN_TEMPLATE_MAP``, sa sumusunod na format ::
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HEADER1': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('VALUE1'): ('/ path / sa / directory', '/ path / sa / directory2',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('VALUE2'): ('/ path / sa / directory3',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HEADER2': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('VALUE1'): ('/ path / sa / directory4',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Mga halimbawa Template Map
Pangalan ng domain Mga Pagkakaiba
Halimbawang ito ay nagbibigay-daan ang pag-override ng mga tiyak na mga template batay sa mga pangalan ng domain o subdomain. Sa ganitong setup, Django ay tumingin sa `` / path / sa / directory`` muna kung ang `` HTTP_HOST`` kasama ang halaga `` www2``.
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HOST': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('www2'): ('/ path / sa / directory',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Pagkakaiba Browser
Halimbawang ito ay nagbibigay-daan sa paghahatid ng iba't ibang mga template (o mga tiyak na lamang bago) batay sa browser ng user.
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_USER_AGENT': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('iPhone | iPod'): ('/ path / sa / directory',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
String ng Query sa Pagkakaiba
Halimbawang ito sumusuri sa query string upang magpasya kung aling mga template upang gamitin batay sa isang query string (ang mga bagay pagkatapos ng '?' Sa isang URL).
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; 'QUERY_STRING': {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1'): ('/ path / sa / directory',),
& Nbsp; & nbsp; & nbsp; },
}
Mga Kinakailangan :
- Python
- Django
Mga Komento hindi natagpuan