django-domeny jest aplikacja Django, który pozwala na uruchamianie wielu różnych witryn w jednym przypadku Django.
instalacji
1. Zainstaluj pakiet
pip zainstalować Django domen
2. Otwórz settings.py i dodać middleware do końca MIDDLEWARE_CLASSES krotki:
MIDDLEWARE_CLASSES + = (
& Nbsp; "domains.middleware.RequestMiddleware",
& Nbsp; "domains.middleware.DynamicSiteMiddleware",
)
Pierwszy middleware domains.middleware.RequestMiddleware jest wymagane, ponieważ ustawia obiekt do lokalnego wątku żądania.
Druga middleware domains.middleware.DynamicSiteMiddleware jest opcjonalne. Można go używać na dynamiczne zmiany parametru SITE_ID odpowiada PK witryny z wymaganych domen (patrz Django witryn ramy).
Jeśli chcesz używać różnych szablonów dla domen, dodać ładowarki szablonów w zacząć od TEMPLATE_LOADERS krotki:
TEMPLATE_LOADERS = (
& Nbsp; "domains.loaders.filesystem.Loader",
& Nbsp; "domains.loaders.app_directories.Loader",
& nbsp; # kolejne ładowarki
)
& Nbsp; Uruchom testy:
./manage.py domeny testowe
Zastosowanie
Jeżeli chcesz korzystać z różnych zestawów szablonów dla poszczególnych domen, wystarczy utworzyć katalogi z nazwą domainname.tld (nie zapomnij dodać TEMPLATE_LOADERS jak zorientowali się w instalacji) i umieścić szablony tutaj.
Ponadto można korzystać z funkcji niestandardowej, która buduje nazwę domeny. Należy dodać atrybut DOMAINS_TEMPLATE_NAME_FUNCTION do swojej settings.py i określić ścieżkę do funkcji nadawania nazw.
Funkcja musi zwrócić krotki z fragmentów trasy. Te fragmenty zostaną połączone w pełnej ścieżki szablonu z django-domen.
Oczekiwać można nazwać tę funkcję my_custom_template_name i umieścił go w moim / projektu / utils.py:
Przy okazji, można uzyskać dostęp do życzenie :)
my_custom_template_name def (template_dir, template_name):
& Nbsp; "" "
& Nbsp; Funkcja ta generuje ścieżki szablonu w formacie:
& Nbsp; {template_dir} / na zamówienie / Domeny / {hosta} / {template_name}
& Nbsp; "" "
& Nbsp; z domains.utils importować get_request
& Nbsp; wniosek = get_request ()
& Nbsp; return (template_dir, "zwyczaj", "domeny", request.get_host,
& Nbsp; template_name)
Dodaj do swojej settings.py tej linii:
DOMAINS_TEMPLATE_NAME_FUNCTION = 'my.project.utils.my_custom_template_name'
Requirements:
- Python
- Django
Komentarze nie znaleziono