3

Je travaille sur un projet en django 1.5.12. version avec django-cms installé. J'ai un fichier généré où est l'information suivante par la commande « gel pépin> de frozen.txt » avec ce que j'ai installé:Django-cms render_to_response ne rend pas au template

Django==1.5.12 
MySQL-python==1.2.5 
South==1.0.2 
argparse==1.2.1 
distribute==0.6.24 
django-classy-tags==0.6.2 
django-cms==2.4.3 
django-mptt==0.5.2 
django-sekizai==0.8.2 
html5lib==1.0b7 
six==1.9.0 
wsgiref==0.1.2 

Eh bien, mon problème est que j'ai une application dans mon projet où j'ai à côté code views.py:

from django.shortcuts import * 
def test(request): 

    data = {'test 1': [ [1, 10] ], 'test 2': [ [1, 10] ],'test 3':[ [2,20]] } 
    print data     # to see if function works 
    return render_to_response("project_pages.html",{'data':data},context) 

et dans mon modèle project_pages.html j'ai ceci:

<table> 
    <tr> 
     <td>field 1</td> 
     <td>field 2</td> 
     <td>field 3</td> 
    </tr> 

    {% for author, values in data.items %} 
    <tr> 
     <td>{{author}}</td> 
     {% for v in values.0 %} 
     <td>{{v}}</td> 
     {% endfor %} 
    </tr> 
    {% endfor %} 
</table> 

et est la réponse rend pas au modèle. Et dans le terminal ne me montre pas d'erreurs. La fonction fonctionne parce qu'elle imprime des données.

Si essayer de retourner quelque chose comme ceci:

return render_to_response("project_pages.html",{'data':data}) 

sans contexte à la fin (il est différent appel), il me donne l'erreur suivante:

"You must enable the 'sekizai.context_processors.sekizai' template " 
TemplateSyntaxError: You must enable the 'sekizai.context_processors.sekizai' template context processor or use 'sekizai.context.SekizaiContext' to render your templates. 

Dans mon settings.py je sekizai:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    'django.core.context_processors.i18n', 
    'django.core.context_processors.request', 
    'django.core.context_processors.media', 
    'django.core.context_processors.static', 
    'cms.context_processors.media', 
    'sekizai.context_processors.sekizai', 
    'sekizai.context.SekizaiContext', 

) 

Alors, que dois-je faire?

+0

Qu'est-ce que vous avez défini comme contexte? –

+0

context = RequestContext (request) –

+0

J'ai essayé un nouveau projet de test dans django sans django-cms installé pour voir si cet appel (return render_to_response ("project_pages.html", {'data': data}) fonctionne, et c'est fonctionne bien, dans mon modèle, il me montre cette table, mais avec django-cms est juste

. –

Répondre

2

Vérifiez les variables de contexte. Il devrait y avoir quelque chose comme ça:

Exemple:

from django.template import RequestContext 

def view(request): 
    ... 

    return render_to_response(
       "project_pages.html", 
       {'data':data}, 
       context_instance=RequestContext(request),     
      ) 
+0

Même résultat, dans mon modèle est juste:

champ 1 champ 2 champ 3
Une chose, dans ce modèle, j'ai une former avec soumettre une action pour analyser un texte de django. J'ai fait une fonction en javascript qui arrête la mise à jour de la page. Est-ce un problème? –

+0

Ça pourrait être un problème oui. La réponse post sera affichée en actualisant la page entière. Si vous ne souhaitez pas actualiser la page, utilisez la requête ajax pour envoyer le formulaire. –

+0

Merci beaucoup. Maintenant travaille. Mais si la page n'est pas rafraîchissante avec ajax, j'aurai le même problème. Je n'ai pas travaillé avec ajax jusqu'à maintenant –

0

j'ai compris.

Dans ce modèle j'ai quelques informations que je ne veux pas perdre quand un utilisateur appuie sur un bouton pour soumettre des informations à django à traiter, donc j'ai fait une fonction en javascript qui permet de soumettre mais pas actualiser la page. En l'absence d'actualisation, le contenu reste statique et la variable de données de la réponse n'est pas envoyée au modèle

1

Pour les personnes qui recherchent ici django 1.8 ou ultérieur, utilisez le code ci-dessous. Maintenant, le processeur de contexte de modèle n'est pas sélectionné dans le fichier setup.py, direclty, si vous écrivez des vues personnalisées.

utiliser le code ci-dessous pour le faire fonctionner:

from sekizai.context import SekizaiContext 

def view(request): 
... 


    return render_to_response('template.html', 
          SekizaiContext(request, {'data': data}))