Vous n'êtes pas identifié(e).
Note
If you're using Django's
render_to_response()<https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#django.shortcuts.render_to_response>
shortcut
to populate a template with the contents of a dictionary, your template
will be passed a Context instance by default (not a RequestContext). To use
a RequestContext in your template rendering, pass an optional third
argument to render_to_response()<https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#django.shortcuts.render_to_response>:
a RequestContext instance. Your code might look like this:
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
https://docs.djangoproject.com/en/dev/ref/templates/api/
L'utilisation d'un dictionnaire fusionné avec le context ne me semble pas
approprié, je ne l'ai jamais vu employé comme cela, mais je n'ai pas la
science infuse ...
def main_formation(request, formation_id):
formations = Formation.objects.get(id=formation_id)
variables = RequestContext(request, {
'formations': formations
})
return render_to_response('saisie/formation.xml', variables)
Le 4 juillet 2012 20:35, M. Namgyal Brisson <
namgyal.brisson _AT_ app-concept-lab.fr> a écrit :
> Bonsoir,
>
> La fonction :
>
> def main_formation(request, formation_id):
> formations = Formation.objects.get(id=formation_id)
> variables = RequestContext(request, {
> 'formations': formations
> })
> return render_to_response('saisie/formation.xml', variables)
>
> comporte à mon sens quelques erreurs!
>
> la fonction, sauf erreur de ma part, 'render_to_response()' est mal
> utilisée.
>
> Elle prend les paramètres
>
> 1. template -> str
>
> 2. dictionnaire de données -> dict
>
> 3. (optionnel) le RequestContext ou le mime type
>
> cf doc, qui est d'ailleurs très bien renseignée à ce sujet !!!
>
>
> https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#django.shortcuts.render_to_response
>
>
> Le 4 juil. 2012 19:42, "Eric Francis" <frncseric _AT_ gmail.com> a écrit :
>
> Bonjour,
>> Je souhaite écrie une fonction me permettant de remplir un template xml.
>> Mai j'ai des problème au niveau du passage de l'objet httpReponse. Bref
>> voici mon ode
>> Fonction écrit dans le fichier views.py
>>
>> [i]
>> def main_formation(request, formation_id):
>> formations = Formation.objects.get(id=formation_id)
>> variables = RequestContext(request, {
>> 'formations': formations
>> })
>> return render_to_response('saisie/formation.xml', variables)
>> [/i]
>>
>> Voici mon fichier template que je souhaite remplir
>>
>> [i]
>> <cdm:CDM xmlns:cdm="http://cdm-fr.fr/2006/CDM-frSchema"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xsi:schemaLocation="http://cdm-fr.fr/2006/CDM-frSchema
>> [url=
>> http://cdm-fr.fr/2006/schemas/CDM-fr.xsd\]http://cdm-fr.fr/2006/schemas/CDM-fr.xsd\
>> "[/url]
>> language="fr-FR">[/i]
>>
>> [i]{% if formations %}
>> <cdm:orgUnitName>
>> <cdm:text language="fr-FR">[b] {{ formation.etablissement
>> }}[/b]
>> </cdm:text>
>> </cdm:orgUnitName>
>> <cdm:orgUnitAcronym>[b]{{ formation.sigle
>> }}[/b]</cdm:orgUnitAcronym>
>> <cdm:contacts>
>> <cdm:contactData>
>> <cdm:adr>
>> <cdm:locality>[b] {{ formation.ville
>> }}[/b] </cdm:locality>
>> <cdm:country>[b] {{ formation.pays }}[/b]
>> </cdm:country>
>> </cdm:adr>
>> </cdm:contactData>
>> </cdm:contacts>[/i]
>>
>> [i]</cdm:CDM>
>> {% endif %}
>> [/i]
>> Merci d'avance à toute personne pouvant me donné quelques indications.
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
Hors ligne
Salut,
Merci pour votre aide. Mon véritable problème semble être mon fichier template qui doit être en xml. En effet, tel que envoyé dans mon premeir poste, mon fichier doit être en xml. S'il vous plait, au cas où vous avez un moyen de le généré autrement, ou même le sauvegardé directement un fichier au format xml, je suis preneur.
Je ne voie pas d'exemple qui permet de remplir un fichier au format xml avec les éléments du dictionnaire; et c'est ce qui me faut.
il me faut peut être cherché une autre fonction, mais je ne sais laquelle. le resultats sur la documentation avec le mot clé "xml" ne donne pas grand chose.
Dans la fonction ci-dessous
return render_to_response('my_template.html', my_data_dictionary, context_instance=RequestContext(request))
Mon template n'est pas un fichier html, je le veux en xml. Mon dictionaire tel que sipécifier marche bien avec un fichier html. Mais comment faire pour uin fichier xml??
Merci pour votre aide
Hors ligne
Peut être cela pourra t il vous aider ?!!
Example <https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#id3>
The following example renders the template myapp/index.html with the MIME
type *application/xhtml+xml*:
from django.shortcuts import render_to_response
def my_view(request):
# View code here...
return render_to_response('myapp/index.html', {"foo": "bar"},
mimetype="application/xhtml+xml")
This example is equivalent to:
from django.http import HttpResponsefrom django.template import Context, loader
def my_view(request):
# View code here...
t = loader.get_template('myapp/template.html')
c = Context({'foo': 'bar'})
return HttpResponse(t.render(c),
mimetype="application/xhtml+xml")
https://docs.djangoproject.com/en/dev/topics/http/shortcuts/
http://www.djangobook.com/en/beta/chapter11/
Si vous cherchez à générer un flux rss, d'autres méthodes sont incluses
dans le framework :
https://docs.djangoproject.com/en/dev/ref/contrib/syndication/?from=olddocs/
Le 5 juillet 2012 00:47, Eric Francis <frncseric _AT_ gmail.com> a écrit :
> Salut,
> Merci pour votre aide. Mon véritable problème semble être mon fichier
> template qui doit être en xml. En effet, tel que envoyé dans mon premeir
> poste, mon fichier doit être en xml. S'il vous plait, au cas où vous
> avez un moyen de le généré autrement, ou même le sauvegardé
> directement un fichier au format xml, je suis preneur.
> Je ne voie pas d'exemple qui permet de remplir un fichier au format xml
> avec les éléments du dictionnaire; et c'est ce qui me faut.
> il me faut peut être cherché une autre fonction, mais je ne sais
> laquelle. le resultats sur la documentation avec le mot clé "xml" ne donne
> pas grand chose.
> Dans la fonction ci-dessous
>
> return render_to_response('my_template.html', my_data_dictionary,
> context_instance=RequestContext(request))
>
> Mon template n'est pas un fichier html, je le veux en xml. Mon dictionaire
> tel que sipécifier marche bien avec un fichier html. Mais comment faire
> pour uin fichier xml??
> Merci pour votre aide
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
Hello
Une autre possibilité c'est aussi d'utiliser le serializer xml intégré dans
django mais tu n'as pas le choix de la structure :
dans ta vue, il te suffit de mettre :
from django.core import serializers
xml_serializer =
serializers.get_serializer("xml")()xml_serializer.serialize(queryset,
stream=response)
Julien.
Hors ligne
Salut,
Merci pour votre aide. Je viens de résoudre le problème. La fonction
return render_to_response('myapp/index.html', {"foo": "bar"},
mimetype="application/xhtml+xml")
marche bien. En fait, j'avais une erreur au niveau de mon query qui ne retournait pas d'objets. Et du coup, mon dictionnaire était vide.
Je souhaite maintenant que ce fichier soit directement disponible en en sortir téléchargéable et c'est autre chose.
Merci pour toutes vos réponses.
Hors ligne
Le jeudi 05 juillet 2012 12:34:21, Eric Francis a écrit :
> Salut,
> Merci pour votre aide. Je viens de résoudre le problème. La fonction
>
return render_to_response('myapp/index.html', {"foo": "bar"},
> mimetype="application/xhtml+xml")
> marche bien. En fait, j'avais une erreur au niveau de mon query qui ne
> retournait pas d'objets. Et du coup, mon dictionnaire était vide.
> Je souhaite maintenant que ce fichier soit directement disponible en en
> sortir téléchargéable et c'est autre chose.
> Merci pour toutes vos réponses.
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Il faut que ta réponse renvoi un header précisant que c'est obligatoirement un
fichier à télécharger et non un contenu à afficher, donc modifier ta ligne de code
:
response = render_to_response('myapp/index.html', {"foo": "bar"},
mimetype="application/xml")
response['Content-Disposition'] = 'attachment; filename=monfichier.xml'
return response
Tu récupères le "HttpResponse" retourné par render_to_response, et tu lui
ajoute l'attribut 'Content-Disposition' (le fameux header de ta réponse), puis
tu retournes ta réponse modifiée.
J'ai modifié le mimetype, parce qu'en théorie le xhtml/xml pour du simple XML
c'est inutile et d'après le XML que tu a donné en exemple, je n'en vois pas de
nécessité.
Note aussi qu'en général on préfère rédiger une sortie XML avec une lib XML
qui t'évitera de générer du XML incorrect et renvoyer le contenu directement
vers un HttpResponse sans utiliser de templates.
Hors ligne
Bonjour,
Merci David Thenon pour votre réponse.
Votre indication marche bien.
Note aussi qu'en général on préfère rédiger une sortie XML avec une lib XML
qui t'évitera de générer du XML incorrect et renvoyer le contenu directement
vers un HttpResponse sans utiliser de templates.
Effectivement, vous avez raison. Pour l'instant, la structure de mon fichier xml est un peu statique, mais il est mieux, pour les besoin de maintenance et d'évolution de mon code, d'utiliser les librairie xml. Toutefois, je n'ai pas assez de connaissances dans python - xml. Je vais m'y mettre pour les prochaines phase de mon projet.
Merci pour votre aide.
Hors ligne