Có những lần khi bạn muốn sử dụng một mẫu khác nhau dựa trên các giá trị của một phần đầu yêu cầu HTTP. Ví dụ, các tên miền khác nhau, loại trình duyệt khác nhau, hoặc thậm chí các trang giới thiệu. Các dự án dynamicloader cho phép bạn chỉ định một danh sách riêng các thư mục trong đó Django nên tìm kiếm các mẫu, dựa trên một giá trị trong tiêu đề yêu cầu.
Cài đặt
1. Cài đặt `` dynamicloader`` trong đường dẫn Python của bạn.
2. Add `` 'dynamicloader.middleware.RequestMiddleware', `` `` thành lập MIDDLEWARE_CLASSES`` của bạn.
3. Add `` 'dynamicloader.loader.load_template_source', `` tại * đầu * của `` thiết lập TEMPLATE_LOADERS`` của bạn.
4. Tạo một cài đặt mới, `` DYN_TEMPLATE_MAP``, trong các định dạng sau ::
& 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 / to / thư mục', '/ path / to / directory2',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('value2'): ('/ path / to / 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 / to / directory4',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Template Bản đồ Ví dụ
Tên miền khác nhau
Ví dụ này cho phép ghi đè lên của một số mẫu dựa trên các tên miền hoặc tên miền phụ. Trong thiết lập này, Django sẽ tìm trong `` / path / to / directory`` đầu tiên nếu trình `` HTTP_HOST`` bao gồm giá trị `` 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 / to / thư mục',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Sự khác biệt về trình duyệt
Ví dụ này cho phép việc cung cấp các mẫu khác nhau (hoặc những người chỉ cụ thể) dựa trên trình duyệt của người dùng.
& 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 / to / thư mục',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Query String khác biệt
Ví dụ này sẽ kiểm tra các chuỗi truy vấn để quyết định mẫu để sử dụng dựa trên một chuỗi truy vấn (những thứ sau một '?' Trong một URL).
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; 'QUERY_STRING': {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1'): ('/ path / to / thư mục',),
& Nbsp; & nbsp; & nbsp; },
}
Yêu cầu :
- Python
- Django
Bình luận không