Tiêu đề câu hỏi của bạn giả định rằng "chế độ xem" và "mẫu" có thể hoán đổi cho nhau - chúng không có. Để có được trang web hiện tại trong một khuôn mẫu, nó cần được thêm vào ngữ cảnh được sử dụng để hiển thị mẫu. Nếu bạn đang sử dụng RequestContext
, bạn có thể viết bộ xử lý ngữ cảnh để thực hiện điều này tự động.
Bạn có thể viết một bộ xử lý bối cảnh để làm điều này như sau:
from django.contrib.sites.models import Site
def site_processor(request):
return { 'site': Site.objects.get_current() }
Sau đó, thêm nó vào TEMPLATE_CONTEXT_PROCESSORS
của bạn, và sử dụng nó như vậy:
<h3>{{ site.name }}</h3>
Nguồn
2011-09-19 05:13:45
Tôi đang sử dụng 'django.views.generic.simple.direct_to_template', vì vậy tôi cần được bảo hiểm, phải không? Không có bộ xử lý ngữ cảnh tích hợp cho điều này? –
Có, 'direct_to_template' sử dụng' RequestContext', tuy nhiên bạn sẽ cần phải viết trình xử lý ngữ cảnh của riêng bạn vì không có bộ xử lý ngữ cảnh nào trong Django. Hoặc bạn có thể chuyển đối số tới 'direct_to_template' để thêm trang hiện tại vào ngữ cảnh. –
Tại sao hàm có tên 'site_processor' thay vì' site'? –