10
votes

Tags de modèle Django dans des vues

Bonjour, j'ai besoin d'actualiser ma balise de modèle personnalisée --Right_side.py-- via Ajax. Existe-t-il un moyen d'importer la balise de modèle dans la vue et de le renvoyer comme httpresponse car je ne veux pas abandonner ma balise de modèle personnalisée (cela fonctionne bien dans d'autres pages) ni de code une nouvelle action de vue qui est vraiment similaire à celle-ci .

avoir un lien pour appeler avec Ajax ou le charger dans la vue à l'intérieur

Si demande.isajax ():

conviennent parfaitement pour moi.


0 commentaires

4 Réponses :


0
votes

Vous pouvez créer un modèle contenant votre templeTag et rien d'autre. Ensuite, vous auriez dans le droit_side.html: xxx

et dans la vue quelque chose comme: xxx


1 commentaires

Oui, mais si vous devez travailler supplémentaire pour préparer les variables nécessaires par le modèle, vous devez dupliquer le code dans les deux endroits.



12
votes

Je trouve cela vraiment utile lorsque vous rafraîchissez une zone avec Ajax. Alors pensé qu'il serait bon de le partager:

Tout d'abord, vous importez la balise de modèle personnalisée que vous avez codée dans votre fichier d'affichage. p> xxx pré>

et ensuite vous l'utilisez comme ceci: p>

return HttpResponse(your_tag_name.your_method(context))


0 commentaires

11
votes

J'ai eu cette même question il y a quelque temps, je chargais des extraits HTML avec Ajax que j'avais déjà écrit en tant que tags de modèle. Et j'essayais d'éviter de faire dupliquer le code à deux endroits.

C'est ce que j'ai proposé pour rendre une étiquette de modèle à partir d'une vue (appelée via Ajax): p>

from django.template import RequestContext, Template

def myview(req):
   context = RequestContext({'somearg':"FooBarBaz"})

   template_string = """
      {% load my_tag from tagsandfilters %}
      {% my_tag somearg %}
   """

   t = Template(template_string)
   return HttpResponse(t.render(context))


3 commentaires

Cela n'invoque pas vraiment le middleware correctement. Appels vers {% CSRF%} dans le modèle associé à mon templatetag venir vide. Stackoverflow.com/Questtions/13241278/... Avez-vous des idées?


Besoin de faire le contexte une demandeContext. context = demandeContext (demande, {....})


Je voulais utiliser la balise de modèle dans une fonction UTILS et que le requileContext a continué à provoquer une erreur en raison de l'attente d'un objet de demande. Un clair contexte a fait le tour pour moi.



0
votes

J'ai trouvé cette solution:

@register.inclusion_tag('path/to/template.html') 
def my_templatetag(parameter):
    #my operations
    return locals()


0 commentaires