2010-07-27 37 views
10

Tôi đã cố gắng truy cập vào biến mẫu django trong trang javascript nội tuyến javascript, nó hoạt động tốt. Nhưng nếu tôi bao gồm js sử dụng <script src="..> thì nó không hoạt động. Giới hạn này hay tôi đang làm gì đó sai? Tôi thực sự đánh giá cao sự giúp đỡ của bạn.Truy cập vào mẫu Django {{Variable}} từ JavaScript

Trả lời

12

Javascript được bao gồm không được xử lý bởi bộ xử lý mẫu Django trên máy chủ, do đó sẽ không hoạt động. Nếu bạn cần chuyển thông tin thông qua mẫu tới các tệp Javascript được bao gồm, hãy tạo mẫu của bạn tạo một khối <script> nhỏ trong đó một số biến toàn cục được khai báo chứa các biến mẫu đó. Sau đó, tệp Javascript thuần túy của bạn có thể nhận được các giá trị bằng cách tìm đối tượng chung được tạo bởi mẫu <script> đó từ mẫu.

+0

này đã làm việc gr8 ... cảm ơn! – Cool

5

Câu trả lời của câu trả lời là chính xác. Tôi thường thấy bộ lọc này hữu ích cho tình huống đó:

@register.filter(name='json') 
def _json(obj): 
    #remember to make sure the contents are actually safe before you use this filter! 
    return safestring.mark_safe(json.dumps(obj)) 

sau đó trong một thẻ <script> Tôi chỉ có thể làm một cái gì đó như thế này:

window.g_details = {{ details|json }}; 
+0

Tôi sẽ sử dụng điều này khi tôi triển khai JSON trong mã js của mình. Cảm ơn – Cool

+0

@JasonPrado: Tại sao một người nên làm điều này? – Medorator

+0

Câu trả lời này là 4 năm vì vậy tôi đặt cược django có một giải pháp tốt hơn bây giờ. Nhưng ý tưởng của tôi ở đây là nó là tốt đẹp để có thể chuyển đổi một từ điển python thành một từ điển JSON một cách an toàn và dễ dàng. –

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