2013-04-10 39 views
9

My files Views.py trông giống như dưới đâybao gồm mẫu thẻ không làm việc trong django

def homepage(request): 
     template = 'homepage.html' 
     list_display_template = 'list.html' 
     list = model.objects.all() 

     return render_to_response(template, 
      {'list_display_template': list_display_template, 
      'list' : list,}, 
      context_instance=RequestContext(request)) 

Và homepage.html của tôi trông giống như dưới đây: -

{% extends "base.html" %} 

    {% block main_content %} 
     {% include list_display_template %} 
    {% endblock %} 

Và list_display_template tôi (list.html) có thông tin sau

< div class= "span10"> 
    {% for item in list %} 
     <p> {{ item }}</p> 
     {% endfor %} 
    </div> 

Các công trình trên phát triển tốt, nhưng trong quá trình sản xuất thẻ bao gồm không hoạt động và khi tôi kiểm tra phần tử, nó không hiển thị bất kỳ mục nào từ list.html. ai đó có thể giúp với điều này.

Chỉnh sửa: - cấu trúc thư mục của tôi là như sau

project_name/ 
    project_name/ 
     settings.py 
    static/ 
     css/ 
     images/ 
    templates/ 
     homepage.html 
     list.html 
     base.html 

Cảm ơn

+0

Nếu bạn làm '{% i nclude 'list.html'%} 'trong' homepage.html' của bạn sẽ hoạt động. – Ngenator

+0

'{% include" list.html "%}' có hoạt động không? – karthikr

+0

Không. cả hai bên trên không hoạt động. Tôi đã thử cung cấp cho đầy đủ pathname 'templates/list.html' ... thậm chí điều đó không làm việc – Dev

Trả lời

15

tôi đã cùng một vấn đề, nhưng tôi sẽ trả lời câu hỏi này trong một cách mà những người dùng khác với một vấn đề tương tự có thể hiểu được.

bạn có thể có một khối mẫu thuộc loại nào đó trong tệp html được bao gồm, khối này hoặc đang mong đợi bao gồm một số loại hoặc gây ra lỗi trong đó gọi là ngoại lệ mà django vượt qua và do đó bạn không thể xem lỗi, nếu bạn sử dụng {% load someLoad %} trong mẫu chính rồi sử dụng nó trong html được bao gồm, tôi đoán điều này thay đổi từ phiên bản sang phiên bản.

trong tôi trường hợp (rất cụ thể) tôi đã có này mất tích trong file html bao gồm:

{% load i18n %} 
{% load cms_tags sekizai_tags %} 
+1

là nó, một tải i18n bị thiếu trong mẫu được bao gồm ... Ockham không bao giờ thất bại. – TheBronx

+1

Tôi chỉ có một vấn đề tương tự và gần như phát điên vì điều đó. những gì làm cho nó phức tạp hơn là nó chỉ xảy ra trên máy chủ sản xuất chứ không phải trên máy của tôi. sau đó, tôi phát hiện ra rằng thanh điều hướng mà tôi sử dụng 'include' trên nó có các url mà tôi đã không slugify để gây ra rất nhiều lỗi nhưng chúng đã bị tắt tiếng bởi câu lệnh include. Cảm ơn^_^ – Zee

2

Tôi chỉ có một vấn đề tương tự. Tôi đã có thể chẩn đoán nó bằng cách tạm thời sao chép và dán html (ví dụ: navigation.html) mà tôi muốn đưa trực tiếp vào trang cha (base.html). Dường như nếu có lỗi trong html được bao gồm, nó chỉ không được đọc và không có lỗi xuất hiện.

Với mã từ navigation.html được dán vào base.html tôi gặp lỗi 500 vì một trong các url được đặt tên trong navigation.html không đảo ngược.

1

Nếu có bất kỳ vấn đề/lỗi nào với mẫu bao gồm, django theo mặc định sẽ không hiển thị lỗi. Bạn có thể kích hoạt nó bằng biến cài đặt TEMPLATE_DEBUG = True Sau đó, bạn có thể xem lỗi trong mẫu khi bạn cố gắng tải trang đó.

Trong trường hợp trên có thể có một số thẻ tải bị thiếu {% load xxx %} trong mẫu được bao gồm.

+0

Trong Django 1.8 trở lên, bạn nên đặt 'TEMPLATES [0] [" OPTIONS "] [" debug "]' thành 'True' thay thế. – Flimm

0

tình huống khác, nơi một bao gồm tuyên bố sẽ thất bại mà không tăng một lỗi là nếu bạn đang làm việc trong một mẫu mà mở rộng khác, và của bạn bao gồm là bên ngoài của một tên khối:

{% extends "my_base.html" %} 

{% block content %} 
    {{ block.super }} 
    {% include "partials/file1.html" %} 
{% endblock %} 

{% include "partials/file2.html" %} 

Trong trường hợp này file2.html sẽ không được bao gồm bởi vì nó không nằm trong một khối, và bạn sẽ không nhận được thông báo cảnh báo, và sẽ thử mọi thứ trước khi bạn nhận ra những gì bạn đã làm :-)

Các vấn đề liên quan