Tôi đã chạy vào hành vi rất lạ của hệ thống mẫu Django. Tôi có một tập tin mẫu, cụ thể là test.html
, mà đệ quy bao gồm bản thân:Thẻ có điều kiện bao gồm trong Django
{% include "test.html" %}
Tất nhiên, mẫu như vậy không có cơ hội để được trả lại, vì không có điều kiện hoàn thiện. OK, chúng ta hãy thử như sau:
{% if test_false %}{% include "test.html" %}{% endif %},
nơi test_false
là một biến chuyển cho template và bằng False
.
Một hy vọng rằng nó sẽ không bao gồm bất cứ điều gì, nhưng nó:
RuntimeError at /test/
maximum recursion depth exceeded while calling a Python object
Tôi không nhận được nó. Bao gồm thẻ có thể lấy đối số từ ngữ cảnh hiện tại, vì vậy tôi nghi ngờ nó được thực thi trước bất kỳ phần nào khác của trang. Vậy tại sao nó bỏ qua thẻ điều kiện?