Так что для тех из нас, кто использует фреймворки Python и Django для разработки веб-сайта, есть этот замечательный инструмент, известный как jinja, который можно использовать в качестве движка шаблонов.Например:
Вместо жесткого кодирования импорта, как это:
<script src="assets/js/onebutton.js"></script>
Мы можем сделать это:
<script src="{% static 'assets/js/onebutton.js' %}"></script>
В этом случае он автоматически ищетпапка с именем static и идет внутрь для поиска необходимого кода.
Но почему невозможно использовать шаблон jinja в Javascript.
Например:
homepage.html
<script src='whatever.js'></script>
<p>Another example</p>
<button id="clickme"> click me </button>
what.js
$(function()
{
$('#clickme').click(function(){
$.ajax({
headers : {'X-CSRFToken': getCookie('csrftoken')},
type: "POST",
url: '{% url "func" %}', //<--Problem arise here
datatype:"json",
data: {},
success: function(data){
var new_template = '<h1> %firstmsg% </h1>';
var new_frontend = new_template.replace('%firstmsg%',data.message);
console.log(new_frontend);
document.getElementById('wor').innerHTML+=new_frontend;
}
});
}
}
Джанго узнаетURL в запросе AJAX как /'{% url "func" %}'
вместо /func
Единственный способ решить эту проблему - переместить весь код из whatever.js
в homepage.html
в блоке <script></script>
.
Возможно, нам нужно что-то импортировать, чтобы шаблоны Jinja работали?