я думаю, вы хотите загрузить javascript локально для конкретной страницы , чтобы сделать это правильно, вам нужно определить {% block %}
в вашем шаблоне base.html
и через механизм наследования DTL
вы можете загрузить javascript правильным образом в правильном порядке без каких-либо конфликтов
в base.html
определить, скажем, {% block javascripts_local %}{% endblock %}
как
{% load static %}
<!doctype html>
<html class="no-js" lang="{% block lang %}en{% endblock %}">
<head>
[..]
</head>
<body{% block body_attributes %}{% endblock %}>
[..]
{% block javascripts %}
<!-- i'm using HTML5 Boiler Plate template -->
<script src="{% static 'js/vendor/modernizr-3.7.1.min.js' %}"></script>
<script src="{% static 'js/plugins.js' %}"></script>
<script src="{% static 'js/main.js' %}"></script>
<!-- override this block in child template -->
{% block javascripts_local %}{% endblock %}
{% endblock %}
</body>
</html>
и затем в вашем дочернем шаблоне переопределите блок
{% extends 'base.html' %}
{% load static %}
[..]
{% block javascripts_local %}
<script>
// refer to
// https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
const form = new FormData(document.querySelector("form"));
// FormData takes the form element as its constructor argument,
// no need to add values individually
// form.append('Name', 'Vitor')
// form.append('Age', 5)
// form.append('csrfmiddlewaretoken', csrftoken);
const request = new XMLHttpRequest()
request.open("POST", "{% url 'my_form' %}", true);
request.send(form)
request.onload = function(){
alert('sucess')
}
request.onerror = function(){
alert('error')
}
</script>
{% endblock %}
для получения более подробной информации о CSRF
с Ajax
, обратитесь к этому топу c https://docs.djangoproject.com/en/3.0/ref/csrf/#ajax