2010-08-23 3 views
9

Est-il possible d'ajouter des balises de gabarit dans des fichiers javascript et css? Je l'utiliserais pour n'importe quoi de passer des urls aux liens d'URL de médias (chemins d'image, etc.) au javascript conditionnel basé sur des permissions d'utilisateur. Je viens de penser que peut-être je pourrais le servir comme s'il s'agissait d'un modèle mais avoir l'url comme fichier javascript. Est-ce la seule façon de faire quelque chose comme ça? Si c'est le cas, cela ne fonctionnerait probablement pas avec mon générateur de médias, donc je voudrais probablement une meilleure solution s'il y en avait une.Django - Balises de gabarit dans les fichiers javascript et css

Répondre

0

Votre idée est la bonne façon de procéder. Si vous voulez tirer parti des outils de template de Django, le plus simple est de servir le fichier JS en tant que template. Voir this question pour une situation comme la vôtre.

0

Vous pouvez servir tout type de contenu comme un modèle, il ne doit pas nécessairement être HTML. Toutefois, vous ne pourrez peut-être pas le diffuser avec le reste de votre contenu statique, en fonction de votre configuration. Une option, si vous ne voulez que remplacer des éléments tels que les URL de média, consiste à "compiler" ces modèles dans des fichiers statiques que vous pouvez servir. Cela ne fonctionnera pas pour tout ce qui est conditionnel basé sur les autorisations de l'utilisateur actuel, cependant. Vous devez écrire un script pour appeler le django.template.loader.render_to_string et écrire le résultat dans un fichier chaque fois que vous déployez ou modifiez des URL de média, etc.

0

En ce qui concerne le contenu dynamique dans les fichiers JS, vous devez créer un modèle, comme les autres ont dit.


Mais vous pouvez joindre très facilement JS et les fichiers CSS pour les modèles de page spécifiques à l'aide django-sekizai. (Je l'utilise comme une partie de django-cms, mais il fonctionne aussi seul.)

Il vous permet, dans un modèle de page normal, de définir les ressources statiques requises du modèle dans un bloc. Il y a un bloc pour CSS et un pour JS. Ces blocs peuvent ensuite être imprimés dans votre base.html. Il gère également les doublons, vous n'avez donc pas à vous soucier d'ajouter les mêmes fichiers plusieurs fois. Voir le usage document.

Avec ce système, vous n'enverrez aucun fichier JS ou CSS restreint, car django n'exécutera que des modèles autorisés et le contenu ne sera jamais ajouté aux blocs JS et CSS.

1

Que diriez-vous de définir les variables JavaScript et CSS attributs de au sein votre modèle Django HTML, entre scénario et le style balises? Je sais que ça sonne comme un hack, mais ça me semble bien rangé, car cela vous permettra de contrôler vos variables dynamiques à partir d'un seul endroit.

Questions connexes