2012-10-30 5 views
1

J'essaie de faire fonctionner Zinnia sur un site Web django afin que je puisse l'évaluer. J'ai réussi à installer toutes ses dépendances et tout va bien, et j'ai créé quelques messages en utilisant les outils d'administration, mais maintenant je reçois des erreurs pour y accéder!Problèmes de démarrage de Zinnia

L'erreur:

KeyError at /weblog/2012/10/12/test-post/ 

'request' 

Request Method:  GET 
Request URL: http://127.0.0.1:8000/weblog/2012/10/12/test-post/ 
Django Version:  1.4.1 
Exception Type:  KeyError 
Exception Value: 'request' 

Exception Location:  /usr/local/lib/python2.7/site-packages/django/template/context.py in __getitem__, line 54 
Python Executable: /usr/local/bin/python 
Python Version:  2.7.3 
Python Path:  

['/home/ubuntudev/webtest/twsite', 
'/usr/local/lib/python2.7/site-packages/setuptools-0.6c12dev_r88846-py2.7.egg', 
'/usr/local/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg', 
'/usr/local/lib/python27.zip', 
'/usr/local/lib/python2.7', 
'/usr/local/lib/python2.7/plat-linux2', 
'/usr/local/lib/python2.7/lib-tk', 
'/usr/local/lib/python2.7/lib-old', 
'/usr/local/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/site-packages'] 

Pour référence, voici mon settings.py et mon urls.py. Ce dernier est certes un énorme gâchis parce que j'ai été fou de tout ce que je pouvais penser. Je ne fais que mouiller mes pieds avec Django et Zinnia, alors s'il vous plaît soyez descriptif dans vos réponses! Merci d'avance.

Répondre

3

Django dispose d'un système permettant de fournir des variables à votre modèle appelé context processors (here's a good blog post about them)), qui sont utiles si vous souhaitez avoir certaines informations dans chaque modèle, par exemple, si vous ne voulez pas avoir à ajouter les liens d'un menu de navigation vers chaque vue/modèle, vous pouvez à la place écrire un processeur de modèle pour fournir ces liens sous la forme d'une liste à chaque modèle:

Certains processeurs de contexte sont assez critiques pour la plupart des applications. django.core.context_processors.request qui transmet les objets de requête actuels à chaque modèle, ce qui vous permet d'accéder à une variable {{ request }} dans votre modèle, ce qui vous donnera des informations sur les en-têtes, etc. nt (as well as much more).

Quoi qu'il en soit, pour couper une longue histoire courte, vous avez désactivé la django.core.context_processors.request ci-dessus dans les paramètres:

#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', 
#  'zinnia.context_processors.version', 
#) 

décommenter tous ceux et vous devriez être bien

+0

Quand je l'ai fait avant de poster ce question, j'ai 'Module" django.core.context_processors "ne définit pas un" auth "processeur de demande appelable' de la console d'administration. J'ai fini par les commenter parce que j'ai vu beaucoup de chevauchement entre ces processeurs de contexte et les autres variables settings.py (comme 'USE_I18N'). Clairement, je fais quelque chose d'autre faux avec ces processeurs de contexte. Souhaitez-vous répondre ici ou préférez-vous que j'ouvre une autre question? – tmesser

+0

'' django.core.context_processors.auth'' devrait être '" django.contrib.auth.context_processors.auth "'. Auth est le paquet d'authentification qui est un add-on au noyau de django, donc il se trouve dans le paquet 'contrib'. J'ai édité ma réponse pour refléter cela –

+0

Cela l'a eu! Merci pour votre aide et l'explication. – tmesser

Questions connexes