J'essaie d'ajouter un fichier javascript personnalisé à une page de modèle d'administrateur Django. J'utilise une classe Media dans ModelAdmin, mais le fichier est chargé dans la section head. J'ai besoin à la fin du fichier. Est-ce que quelqu'un sait comment faire ça?
Merci à tous!
class Media: js = ( 'js/jquery.mask.min.js', 'js/mask.js', )
Le but de ces scripts est d'avoir des masques fonctionnant pour certains champs du formulaire.
3 Réponses :
Vous pouvez étendre les fichiers de modèle de la section d'administration et les y placer directement. Voir https://docs.djangoproject.com/en/2.2/ref/contrib/admin/#overriding-admin-templates
Je l'ai fait dans certains de mes propres projets. Par exemple, dans votre dossier de modèles, vous pouvez avoir:
/templates/admin/base_site.html
Dans ce fichier, vous pouvez apporter les modifications souhaitées (comme pour les modèles Django classiques). Dans votre cas, ce serait probablement quelque chose comme ceci:
{% extends 'admin/base_site.html' %} {% load static %} {% block footer %} <div id="footer"></div> <script src="whatever/source/jquery.js" /> <script src="whatever/source/mask.js" /> {% endblock %}
J'espère que cela t'aides!
Merci beaucoup! Votre conseil avec le conseil de @ mrash a fait l'affaire.
Content de l'entendre! Bonne chance
dans le code javascript, vous devez forcer le code à s'exécuter après le chargement de la page. par exemple dans jQuery:
$(function(){ /* this code runs after page load */ });
Merci beaucoup! Votre conseil avec celui de @ Sam a fait l'affaire.
Utilisez window.addEventListener
:
window.onload = function () { if (typeof (django) !== 'undefined' && typeof (django.jQuery) !== 'undefined') { (function ($) { // Code }(django.jQuery)); } };
Autrement:
window.addEventListener('load', function() { (function ($) { // Code })(django.jQuery); });