2
votes

django admin - Comment ajouter du javascript à la fin d'un fichier

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.


0 commentaires

3 Réponses :


2
votes

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!


2 commentaires

Merci beaucoup! Votre conseil avec le conseil de @ mrash a fait l'affaire.


Content de l'entendre! Bonne chance



2
votes

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 */
});


1 commentaires

Merci beaucoup! Votre conseil avec celui de @ Sam a fait l'affaire.



0
votes

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);
});


0 commentaires