Disons que nous voulons une bibliothèque de pièces à base de JavaScript de la fonctionnalité (je pense jquery): Par exemple:Comment gérer les modules Javascript dans les templates django?
- un dialogue ajax
- un sélecteur Date
- une forme validateur
- une barre de menu coulissant
- un accordéoniste thingy
Il y a quatre morceaux de code pour chacun: certains Python, CSS, JS, & HTML.
Quelle est la meilleure façon d'organiser toutes ces pièces afin que:
- peut être soigneusement réutilisé chaque javascript « module » par des vues différentes
- les quatre bits de code qui composent le séjour de la fonction terminée ensemble
- les css/js/html parties apparaissent dans leurs bons endroits dans la réponse
- dépendances communes entre les modules ne sont pas répétées (par exemple: un fichier javascript en commun)
x --------------
Ce serait bien si, ou est-il un moyen de faire en sorte que, lorsqu'il est appelé à partir d'un templatetag, les modèles respectent le {% block %} directives. Ainsi, on pourrait créer un seul modèle avec un bloc pour CSS, HTML et JS, dans un seul fichier. Invoquez-le via un template-template qui est appelé à partir du template de n'importe quelle vue le veut. Cela a un sens. Est-ce que cela peut déjà être fait? Mes modèles de template semblent ignorer les directives {% block%}.
x --------------
Il y a quelques très pertinent gasbagging de mettre ces médias sous des formes ici http://docs.djangoproject.com/en/dev/topics/forms/media/ qui appliquent probablement aux exemples sous forme de validateur et sélecteur de date.
Merci Peter. Il existe des routines de compression js qui pourraient être utiles après coup dans un élément de Middleware de réponse; Cependant, cette question est sur la meilleure façon de mettre en page un projet django pour faciliter le fait d'avoir beaucoup de javascript dans les réponses sans maux de tête de la source devenant chaotique. Je m'attends à ce que 'includes' et 'templatetags' soient impliqués d'une manière ou d'une autre. –
Vous avez raison: j'ai eu une conversation dans ma tête et je ne vous en ai donné que la moitié. Nous avons essayé d'utiliser la commande 'utiliser des modèles pour inclure uniquement les fichiers JS pour une page donnée', mais en deux clics, l'utilisateur en aurait avalé 95% de toute façon. Plutôt que de manger tous ces téléchargements séparés et d'avoir à faire face au désordre de s'assurer que chaque page comprenait les bonnes choses, nous avons essayé de tout mettre dans un fichier concaténé et de le réduire. Le résultat était étonnamment petit et nous avons simplement mis le tag-link dans le template de base. Terminé. –
Je suis d'accord avec Peter ici - Il est probablement plus facile de simplement les concaténer ensemble et de laisser l'utilisateur les télécharger tous en même temps. Regardez django-assets comme un moyen facile de gérer la concaténation: https://launchpad.net/django-assets – sheats