2015-01-13 19 views
10

Trong script.js tôi:Django {% tĩnh 'path' %} trong javascript tập tin

pic.src = "/static/photos/1.jpg"; // This works 
pic2.src = "{% static 'photos/1.jpg' %}" // Does not work 

Tại sao trong thế giới này sẽ xảy ra? Vì trong home.html của tôi, {% static 'path'%} hoạt động:

{% load staticfiles %} 
<script src="{% static 'script.js' %}"></script> // This works 

Và {% load staticfiles%} hoặc {% load static%}? Cả hai đều làm việc cho tôi, script.js được tải.

+0

Có, vì tệp html là mẫu nhưng các tệp tĩnh không được xử lý như vậy. –

+0

Cảm ơn bạn đã trả lời nhanh Simeon! Vậy pic.src = "static/photos/1.jpg" là cách duy nhất? – lucahuy

+0

Nếu bạn thực sự muốn javascript của mình được hiển thị từ mẫu/lượt xem, bạn có thể dễ dàng làm điều đó. Nhưng nó có lẽ không phải là những gì bạn muốn. Nhiều khả năng, bạn muốn phần lớn các tệp js của bạn là các tệp tĩnh và sau đó thêm mã xem cụ thể vào cuối mẫu trong phần tử

2

Bạn có thể gán đường dẫn trong mẫu của bạn và sau đó sử dụng nó trong tệp javascript của bạn.

mẫu:

<script> 
    var url = "{% static 'photos/1.jpg' %}"; 
</script> 

Javascript:

pic2.src = url 
3

Nếu bạn cần nhiều tĩnh (hoặc phương tiện truyền thông) của url trong .js tập tin của bạn, điều này có thể thuận tiện hơn:

<script> 
    var static_url = "{% get_static_prefix %}"; 
    var media_url = "{% get_media_prefix %}"; 
</script> 

Sau đó, cả hai url được tự do có sẵn trong tất cả các file javascript.

+0

điều này sẽ gây ra một vấn đề với collectstatic về triển khai. –

+0

@NK Loại sự cố nào? – knbk

+0

Tôi nghĩ rằng việc tạo các url như thế này đã gây ra sự cố - cho bất kỳ url nào không được tạo với {% static%}, tài nguyên không được thu thập. Nhưng sau này tôi thấy rằng vấn đề là một vấn đề khác, và chúng có thể được thu thập trong giai đoạn hậu xử lý. –

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