2012-09-04 28 views
8

Tôi đang cố gắng để hiển thị div s phụ thuộc vào việc nhập cơ sở dữ liệu đã được thực hiện:nếu biến và biến được định nghĩa - jinja2

<table class="info-table"> 
<tr><td> 
<div class="info-table_titlebox"> 
{% if post.wrk_1_title is defined %} 
    <div class="info-title_title"> 
    <h2>{{post.wrk_1_title}}</h2> 
    <h3>Facilitator: {{post.wrk_1_facilitator}}</h3> 
    <h4>Location: {{post.wrk_1_locate}}</h4> 
    <h4>Max participants: {{post.wrk_1_max}}</h4> 
    </div> 
    <div class="info-title_list"> 
     <ul> 
     <li>{{post.eventday}} - <b>Week {{post.eventweek}}</b></li> 
     <li class="info-title_listright">{{post.wrk_1_time}}</li> 
     </ul> 
    </div> 
    <p>{{post.wrk_1_description}}</p> 
{% endif %} 
</div> 
</td> 
<td> 
<div class="info-table_titlebox"> 
{% if post.wrk_1_title is defined and post.wrk_2_title is defined %} 
    <div class="info-title_title"> 
    <h2>{{post.wrk_2_title}}</h2> 
    <h3>Facilitator: {{post.wrk_2_facilitator}}</h3> 
    <h4>Location: {{post.wrk_2_locate}}</h4> 
    <h4>Max participants: {{post.wrk_2_max}}</h4> 
    </div> 
    <div class="info-title_list"> 
     <ul> 
     <li>{{post.eventday}} - <b>Week {{post.eventweek}}</b></li> 
     <li class="info-title_listright">{{post.wrk_2_time}}</li> 
     </ul> 
    </div> 
    <p>{{post.wrk_2_description}}</p> 
{% endif %} 
</div> 
</td> 

Đây là một đoạn mã đơn giản - mô hình mang về. Về cơ bản nếu tiêu đề nằm trong cơ sở dữ liệu chỉ hiển thị div1 nếu cả hai title 1title 2 đều có trong cơ sở dữ liệu hiển thị div1div2 v.v.

Hiện tại loại tác phẩm này hiển thị số div Tôi muốn hiển thị nhưng vì lý do nào đó, nó cũng hiển thị hình ảnh tiếp theo. Nếu tôi có tiêu đề cho div 1 nó cho thấy 12, nếu tôi có một tiêu đề cho div 12 nó cho thấy 1, 2, and 3

Tôi thực sự bối rối như tôi thực sự mới để Jinja2. Tôi không chắc chắn nếu đó là vị trí của tôi cú pháp trong html, hoặc nếu cú ​​pháp là sai, hoặc nếu bạn không thể kiểm tra qua hai biến ... bất kỳ trợ giúp sẽ được đánh giá cao.

+0

Bạn có chắc chắn các biến jinja không được xác định trong ngữ cảnh không? Bạn luôn có thể kiểm tra điều này bằng cách tách {% if post.wrk_1_title được định nghĩa và post.wrk_2_title được định nghĩa%} trong hai if's và tìm trong html kết quả. – voscausa

+0

@ vocausa Tôi đoán im sorta không chắc chắn nghĩa là gì, tôi giả định khi một mục được tạo cho cơ sở dữ liệu nhưng không có gì được thêm vào từ việc gửi biểu mẫu có nghĩa là khi mục này được lấy từ cơ sở dữ liệu của nó. nó sẽ xuất hiện là "Không" nhưng có vẻ như nó làm cho một mục nhập ... có thể là một chuỗi rỗng? vì vậy bằng cách kiểm tra "đã xác định" nếu có mục nhập, nó sẽ hiển thị div này. – Jesse

+0

Một biến có giá trị None được xác định. Không được định nghĩa nghĩa là: biến không được biết. – voscausa

Trả lời

27

Như trong Python, 0, None, [], {}"" là sai. Bất cứ điều gì khác hơn thế, đó là sự thật.

"Các câu lệnh if trong Jinja có thể so sánh với các câu lệnh if của Python Trong hình thức đơn giản nhất bạn có thể sử dụng nó để kiểm tra xem một biến là xác định, không có sản phẩm nào hay không sai:".

{% if post and post.wrk_1_title %} 

{% endif %} 

Tài liệu: http://jinja.pocoo.org/docs/templates/#if

+0

chỉ để xác nhận tôi hiểu được tuyên bố ở trên của bạn nói rằng jinja được định nghĩa là một thử nghiệm để kiểm tra nếu có một biến ?? – Jesse

+0

Có, nhưng 'bài' phải được xác định. Nếu bạn không biết nếu 'bài' được định nghĩa, bạn nên kiểm tra nó:' post và post.wrk_1_title'. –

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