Кнопка подтверждения на кнопке сохранения, как уже есть у кнопки удаления
Я хочу изменить интерфейс администратора Django.
У кнопки удалить уже есть страница подтверждения. Но я хочу добавить это подтверждение к кнопкам сохранить или изменить. На самом деле это не совсем та же кнопка удаления.
Я хочу изменить стандартные кнопки администратора как этот JS или я хочу добавить JS к кнопкам администратора.
<input type="submit" onclick="linkSubmit('http://www.google.com')" value="Submit">
<p id="demo"></p>
<script>
function linkSubmit(link) {
let text = "Press a button!\nEither OK or Cancel.";
if (confirm(text) == true) {
window.location.href = link;
} else {
}
document.getElementById("demo").innerHTML = text;
}
</script>
Предполагая, что для кнопки уже существует какой-то тип слушателя событий, я бы добавил свою собственную пользовательскую функцию в качестве дополнительного слушателя для события щелчка. Затем я бы вставил свою логику if(confirm) и вызвал event.stopImmediatePropagation() по мере необходимости, чтобы предотвратить возникновение исходной функциональности.
- Создайте файл templates/admin/change_form.html в вашем проекте:
{% extends "admin/change_form.html" %}
{% block admin_change_form_document_ready %}{{ block.super }}
<script id="django-admin-form-change-constants"
data-model-name="{{ opts.model_name }}">
let modelName = document.getElementById('django-admin-form-change-constants').dataset.modelName;
let form = document.getElementById(modelName + '_form');
form.addEventListener('submit', (event) => {
let text = "Press a button!\nEither OK or Cancel.";
if (!confirm(text)) {
event.preventDefault();
}
});
</script>
{% endblock %}
- Установите
DIRS
в файле myproject/settings.py ссылку на каталогtemplates
вашего проекта:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
...
}
]
Ссылки:
- https://docs.djangoproject.com/en/4.1/ref/contrib/admin/#overriding-admin-templates
- https://docs.djangoproject.com/en/4.1/howto/overriding-templates/#overriding-from-the-project-s-templates-directory .
- https://github.com/django/django/blob/4.1/django/contrib/admin/templates/admin/change_form.html#L66-L74 .
- https://github.com/django/django/blob/4.1/django/contrib/admin/static/admin/js/change_form.js#L5 .
Мы нашли решение в файлах команды delete. Мы взяли копии файлов подтверждения функции delete и подключили их к кнопке подтверждения.
Мы по-прежнему не можем выдать это за предупреждение. Выдает подтверждение на другой странице.