2011-02-07 34 views
14

Tôi muốn đặt nghỉ và tiếp tục trong mã của tôi, nhưng nó không hoạt động trong mẫu Django. Làm thế nào tôi có thể sử dụng tiếp tục và phá vỡ bằng cách sử dụng mẫu Django cho vòng lặp. Dưới đây là một ví dụ:Làm cách nào tôi có thể sử dụng ngắt và tiếp tục trong các mẫu Django?

{% for i in i_range %} 
{% for frequency in patient_meds.frequency %} 
{% ifequal frequency i %} 
<td class="nopad"><input type="checkbox" name="frequency-1" value="{{ i }}" checked/> {{ i }} AM</td> 
{{ forloop.parentloop|continue }} ////// It doesn't work 
{ continue }      ////// It also doesn't work 
{% endifequal %} 
{% endfor%} 
<td class="nopad"><input type="checkbox" name="frequency-1" value="{{ i }}"/> {{ i }} AM</td> 
{% endfor %} 
+0

Bạn cần phải rõ ràng hơn. Đây có phải là một vấn đề python hoặc một vấn đề mẫu django? Thông thường các mẫu không nên có logic như vậy trong chúng. Bạn có thể đăng một ví dụ đơn giản với một số mã không? – Spacedman

+2

Bạn sẽ phải hiển thị cho chúng tôi mã không hoạt động và giải thích cách mã không thành công (ví dụ bằng cách sao chép thông báo lỗi chính xác vào câu hỏi của bạn). –

+0

% cho i trong i_range%} {% cho tần suất trong patient_meds.frequency%} {% ifequal frequency i%} {{i}} AM {{forloop.parentloop | continue}} ////// I does'nt công việc {tiếp tục} ////// Nó cũng không hoạt động {% endifequal%} {% endfor%} {{i}} AM {% endfor%} – GoldenBird

Trả lời

24

Đối-vòng trong Django mẫu khác với Python đơn giản cho-vòng, vì vậy continuebreak sẽ không làm việc trong đó. Xem cho chính mình trong Django docs, không có break hoặc continue thẻ mẫu. Với vị trí tổng thể của cú pháp mẫu Keep-It-Simple-Stupid trong cú pháp mẫu Django, có thể bạn sẽ phải tìm một cách khác để thực hiện những gì bạn cần.

+2

điều đó đúng, nhưng nó giống như giới hạn, không phải là KISS. phá vỡ rất đơn giản. Ví dụ: dừng lặp vòng lặp chính nếu bất kỳ vòng lặp lồng nhau nào tạo ra đủ mục - rất hữu ích và đơn giản với ngắt mẫu - hệ thống mẫu gọn gàng như mako hoặc cheetah có hỗ trợ cho việc ngắt/tiếp tục. –

+0

@ups trong ví dụ bạn đã cho bạn có thể chỉ cần sử dụng thẻ mẫu 'slice' (ví dụ:' list | slice: ": 10" ') để giới hạn vòng lặp cho một số lần lặp nhất định hoặc thậm chí là làm mức độ ngữ cảnh. – guival

37

Django không hỗ trợ nó một cách tự nhiên.

Bạn có thể triển khai forloop | tiếp tục và ngắt kết nối | ngắt với bộ lọc tùy chỉnh.

http://djangosnippets.org/snippets/2093/

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