2011-10-21 2 views
3

Nous utilisons Django pour écrire notre nouveau projet. Notre concepteur veut écrire des modèles avec XSLT. Comme vous le savez, Django a son propre système de template, et je n'ai aucun argument pour expliquer pourquoi le designer ne peut pas utiliser XSLT. 2 questions:Puis-je utiliser XSLT dans Django?

  1. Puis-je retourner XML dans mes vues?
  2. Y a-t-il une raison pour cela? Quels faits peuvent m'aider à changer son point de vue sur le système de templates de Django?
+2

Je dirais qu'il vaut mieux utiliser xslt! un desginer heureux est un desginer productif! – Treemonkey

+0

Effectuez-vous votre transformation XML sur le serveur, auquel cas vous n'avez pas besoin de renvoyer le code XML d'une vue ou sur le client, auquel cas vous pouvez toujours utiliser les modèles Django pour générer le code XML. Puis c'est désordonné ... – Spacedman

+0

Avez-vous fini par discuter de ce point avec vos concepteurs? Quel était leur raisonnement et comment les choses se sont-elles déroulées? – Kreychek

Répondre

5

1). Oui pourquoi pas.

import libxslt 
import libxml2 

from django http import HttpResponse 

def your_view(request): 
    xsl = libxslt.parseStyleSheetDoc(libxml2.parseFile('stylesheet.xml')) 
    data = # your xml here 
    result = xsl.applyStylesheet(data) 
    response = HttpResponse() 
    xsl.saveResultToFile(response, result) 
    return response 

2). Cela sollicitera probablement des opinions, des débats, des arguments, des sondages ou des discussions prolongées. :-)

+0

Le problème est la chaîne "data = # votre xml ici". Je pense ici que je dois générer des données formatées xml befer retour. :(Tant de chaînes en trop dans mon code source :( – SkyFox

+2

@SkyFox Oui, vous devez faire ce travail supplémentaire, vous avez donc besoin d'une raison d'utiliser XSLT au lieu de modèles Django. "Notre concepteur veut" ne sonne pas comme un bon – DrTyrsa

+1

Si vous en avez vraiment besoin, vous pouvez facilement rendre xml avec le système de template de django en utilisant render(), puis le passer au xslt, mais je suis tout à fait d'accord avec @DrTyrsa pour avoir une meilleure raison de le faire: – Tetaxa