2010-08-29 25 views
5

Tôi đang xuất nội dung từ mô hình của mình vào các mẫu của mình, tuy nhiên một số trường mô hình gọi dữ liệu được lưu trữ trong các mô hình khác. Điều này chỉ xảy ra trong một vài trường. Tôi tự hỏi liệu sử dụng một thẻ if để đánh giá điều này sẽ hiệu quả hơn so với việc lưu trữ các thẻ django bên trong các mô hình.Lưu trữ và thoát thẻ Django và bộ lọc trong các mẫu Django

Câu trả lời cho this question nói rằng lưu trữ thẻ django trong mô hình là một ý tưởng tồi mà không đưa ra lý do (mặc dù tôi nghĩ một trong những lý do có thể là ai đó có thể tiêm một số thẻ trong Cơ sở dữ liệu). Giả sử rằng việc tiêm cơ sở dữ liệu là hiếm, có cách nào đó để thoát khỏi các thẻ Django và các bộ lọc được lưu trữ trong một mô hình hay không. Hoặc là tốt hơn, phương pháp nào hiệu quả nhất để xử lý tình huống trên, trong đó một trường mô hình trong một số trường gọi các trường được lưu trữ trong một mô hình khác.

Ví dụ:

này nên được lưu trữ trong các mô hình của tôi

<p>We focus on:</p> 
{% for item in services %} 
{% url service_view item.id as service_url %} 
<ul> 
<li><a href="service_url">{{item.title}}</a></li> 
</ul> 
{% endfor %} 

Xuất ra nó nên kết quả trong django phân tích các thẻ django có liên quan, nếu như một phần của mẫu

+0

Tôi hoàn toàn không hiểu câu hỏi của bạn. "Thẻ được lưu trữ trong cơ sở dữ liệu"? Bạn có thể cho chúng tôi một số ví dụ không? –

Trả lời

1

Cảm ơn Ned, tôi đã thử thực hiện điều đó nhưng tôi thấy nó khá phức tạp và cũng bất lợi về mặt tính di động.

Tuy nhiên, tôi đã tìm thấy chính xác những gì tôi cần tại Đoạn trích Django (không biết tại sao tôi không nhìn ở đó trước). Một tiện ích khá hữu ích của nó được gọi là render_as_template.

Sau khi thiết lập nó làm thẻ tùy chỉnh, tất cả những gì tôi cần là sử dụng thẻ đó ở dạng {% render_as_template about_view.content %} và các thẻ trong mô hình được hiển thị dưới dạng mô hình.

hướng dẫn về tạo mẫu riêng của bạn và các thẻ available here

0

Bạn nên sử dụng inclusion tags và sau đó bao gồm rằng thẻ bất cứ nơi nào bạn muốn html để được trả lại. Mô hình chỉ nên tạo các giá trị cho các biến, chứ không phải định dạng.

+0

cách thức hoạt động? Động cơ của toàn bộ trường hợp vấn đề là bao gồm đầu ra từ một mô hình khác trong một vài trường từ mô hình khác. Khi thực hiện điều này, tôi muốn duy trì hiệu suất bằng cách tránh một vòng lặp tiếp tục thực thi để kiểm tra xem trường có gọi các mô hình khác không. Để tránh vòng lặp, tôi lưu dữ liệu trong trường bằng mã để gọi các trường liên quan từ một mô hình khác. –