Ada saat-saat ketika Anda ingin menggunakan template yang berbeda berdasarkan nilai dari header permintaan HTTP. Sebagai contoh, nama domain yang berbeda, jenis browser yang berbeda, atau bahkan halaman pengarah. Proyek dynamicloader memungkinkan Anda untuk menentukan daftar terpisah dari direktori, yang Django harus mencari template, berdasarkan nilai dalam header permintaan.
Instalasi
1. Instal `` dynamicloader`` di jalur Python Anda.
2. Tambahkan `` 'dynamicloader.middleware.RequestMiddleware', `` `` ke MIDDLEWARE_CLASSES`` pengaturan Anda.
3. Tambahkan `` 'dynamicloader.loader.load_template_source', `` di atas * * dari `` pengaturan TEMPLATE_LOADERS`` Anda.
4. Buat pengaturan baru, `` DYN_TEMPLATE_MAP``, dalam format berikut ::
& 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 / ke / direktori', '/ path / ke / directory2',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('value2'): ('/ path / ke / 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 / ke / directory4',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Template Peta Contoh
Nama Domain Perbedaan
Contoh ini memungkinkan menimpa template tertentu berdasarkan nama domain atau subdomain. Dalam konfigurasi ini, Django akan terlihat dalam `` / path / ke / directory`` pertama jika `` HTTP_HOST`` termasuk nilai `` 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 / ke / direktori',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Perbedaan Browser
Contoh ini memungkinkan pengiriman template yang berbeda (atau yang hanya tertentu) berdasarkan pada browser pengguna.
& 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 / direktori /',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Query String Perbedaan
Contoh ini memeriksa query string untuk menentukan template untuk digunakan berdasarkan pada query string (hal-hal setelah '?' Di URL).
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; 'QUERY_STRING': {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1'): ('/ path / ke / direktori',),
& Nbsp; & nbsp; & nbsp; },
}
Persyaratan :
- Python
- Django
Komentar tidak ditemukan