Même si la majorité du code Django est en Python, les applications contribuées admin
et gis
contiennent du code JavaScript.
Veuillez respecter ces standards de codage lorsque vous écrivez du code JavaScript destiné à faire partie de Django.
.editorconfig
. Nous recommandons d’utiliser un éditeur de texte avec prise en charge de EditorConfig pour éviter des problèmes d’indentation et d’espace. La plupart des fichiers JavaScript utilisent 4 espaces pour l’indentation, mais il y a quelques exceptions.camelCase
plutôt que la séparation_par_soulignement
. Il peut arriver que certains fichiers JavaScript utilisent un style de code différent. Merci de vous conformer au style de code de chaque fichier.$('body').on('click', sélecteur, fonction)
plutôt que $(sélecteur).click(fonction)
. Cela simplifie l’extension du comportement par défaut de Django avec JavaScript par d’autres projets.Django’s admin system leverages the jQuery framework to increase the capabilities of the admin interface. In conjunction, there is an emphasis on admin JavaScript performance and minimizing overall admin media file size. Serving compressed or « minified » versions of JavaScript files is considered best practice in this regard.
To that end, patches for JavaScript files should include both the original
code for future development (e.g. foo.js
), and a compressed version for
production use (e.g. foo.min.js
). Any links to the file in the codebase
should point to the compressed version.
Pour simplifier le processus de mise à disposition de code JavaScript optimisé, Django contient un script Python utile pour créer une version « minifiée ». Pour le lancer :
$ python django/contrib/admin/bin/compress.py
...\> py django\contrib\admin\bin\compress.py
En arrière-plan, compress.py
est une interface au compilateur Closure de Google, lui-même écrit en Java. La bibliothèque de compilation Closure n’est pas livrée avec Django, mais sera automatiquement installée par npm
. La bibliothèque de compilation Closure nécessite Java 7 ou plus récent.
Merci de ne pas oublier de lancer compress.py
et d’inclure le diff
des scripts minifiés lorsque vous soumettez des correctifs de JavaScript pour Django.
Les tests JavaScript de Django peuvent être lancés dans un navigateur ou à partir de la ligne de commande. Les tests sont situés dans un répertoire js_tests
au premier niveau.
Les tests JavaScript de Django utilisent QUnit. Voici un exemple de module de test :
QUnit.module('magicTricks', {
beforeEach: function() {
const $ = django.jQuery;
$('#qunit-fixture').append('<button class="button"></button>');
}
});
QUnit.test('removeOnClick removes button on click', function(assert) {
const $ = django.jQuery;
removeOnClick('.button');
assert.equal($('.button').length, 1);
$('.button').click();
assert.equal($('.button').length, 0);
});
QUnit.test('copyOnClick adds button on click', function(assert) {
const $ = django.jQuery;
copyOnClick('.button');
assert.equal($('.button').length, 1);
$('.button').click();
assert.equal($('.button').length, 2);
});
Consultez la documentation de QUnit pour des informations sur les types d”assertions prises en charge par QUnit.
Les tests JavaScript peuvent être lancés à partir d’un navigateur Web ou de la ligne de commande.
Pour lancer les tests à partir d’un navigateur Web, ouvrez js_tests/tests.html
dans votre navigateur.
Pour mesure la couverture de code lors de l’exécution des tests, vous devez afficher ce fichier par HTTP. Pour voir la couverture de code :
python -m http.server
à partir du répertoire racine (pas depuis le répertoire js_tests
).Pour lancer les tests à partir de la ligne de commande, il est nécessaire que Node.js soit installé.
Après l’installation de Node.js
, installez les dépendances de tests JavaScript en exécutant ce qui suit à partir de la racine du dépôt Django :
$ npm install
...\> npm install
Puis, lancez les tests avec :
$ npm test
...\> npm test
avr. 06, 2021