2009-07-28 8 views
3

Je cours django 1.1rc. Tout mon code fonctionne correctement en utilisant le serveur de développement intégré de django; Cependant, quand je me déplace dans la production à l'aide de mod_python d'Apache, je reçois l'erreur suivante sur toutes mes vues:django @login_required erreur de décorateur

Caught an exception while rendering: Reverse for '<django.contrib.auth.decorators._CheckLogin 

Qu'est-ce que je pourrais trouver qui est la cause de cette erreur?

Mise à jour: Ce qui est étrange, c'est que je peux accéder au compte vues/login et aussi le site d'administration très bien. J'ai essayé de supprimer le décorateur @login_required sur toutes mes vues et il génère le même type d'exception.

Update2: Il semble donc y avoir un problème avec les vues de mon package personnalisé: booster. Le django.contrib fonctionne très bien. Je suis au service de l'application au http://server_name/booster. Toutefois, la vue de connexion auth intégrée redirige vers http://server_name/accounts/login. Est-ce que cela donne une idée de ce qui peut être mauvais?

Traceback:

Environment: 

Request Method: GET 
Request URL: http://lghbb/booster/hospitalists/ 
Django Version: 1.1 rc 1 
Python Version: 2.5.4 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.admin', 
'booster.core', 
'booster.hospitalists'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware') 


Template error: 
In template c:\booster\templates\hospitalists\my_patients.html, error at line 23 
    Caught an exception while rendering: Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x05016DD0>' with arguments '(7L,)' and keyword arguments '{}' not found. 
    13 :      <th scope="col">Name</th> 


    14 :      <th scope="col">DOB</th> 


    15 :      <th scope="col">IC</th> 


    16 :      <th scope="col">Type</th> 


    17 :      <th scope="col">LOS</th> 


    18 :      <th scope="col">PCP</th> 


    19 :      <th scope="col">Service</th> 


    20 :     </tr> 


    21 :    </thead> 


    22 :    <tbody> 


    23 :    {% for patient in patients %} 


    24 :     <tr class="{{ patient.gender }} select"> 


    25 :       <td>{{ patient.bed }}</td> 


    26 :       <td>{{ patient.mr }}</td> 


    27 :       <td>{{ patient.acct }}</td> 


    28 :       <td><a href="{% url hospitalists.views.patient patient.id %}">{{ patient }}</a></td> 


    29 :       <td>{{ patient.dob }}</td> 


    30 :       <td class="{% if patient.infections.count %}infection{% endif %}"> 


    31 :        {% for infection in patient.infections.all %} 


    32 :        {{ infection.short_name }} &nbsp; 


    33 :        {% endfor %} 


Traceback: 
File "C:\Python25\Lib\site-packages\django\core\handlers\base.py" in get_response 
    92.     response = callback(request, *callback_args, **callback_kwargs) 
File "C:\Python25\Lib\site-packages\django\contrib\auth\decorators.py" in __call__ 
    78.    return self.view_func(request, *args, **kwargs) 
File "c:/booster\hospitalists\views.py" in index 
    50. return render_to_response('hospitalists/my_patients.html', RequestContext(request, {'patients': patients, 'user' : request.user})) 
File "C:\Python25\Lib\site-packages\django\shortcuts\__init__.py" in render_to_response 
    20.  return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs) 
File "C:\Python25\Lib\site-packages\django\template\loader.py" in render_to_string 
    108.  return t.render(context_instance) 
File "C:\Python25\Lib\site-packages\django\template\__init__.py" in render 
    178.   return self.nodelist.render(context) 
File "C:\Python25\Lib\site-packages\django\template\__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "C:\Python25\Lib\site-packages\django\template\debug.py" in render_node 
    71.    result = node.render(context) 
File "C:\Python25\Lib\site-packages\django\template\loader_tags.py" in render 
    97.   return compiled_parent.render(context) 
File "C:\Python25\Lib\site-packages\django\template\__init__.py" in render 
    178.   return self.nodelist.render(context) 
File "C:\Python25\Lib\site-packages\django\template\__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "C:\Python25\Lib\site-packages\django\template\debug.py" in render_node 
    71.    result = node.render(context) 
File "C:\Python25\Lib\site-packages\django\template\loader_tags.py" in render 
    24.   result = self.nodelist.render(context) 
File "C:\Python25\Lib\site-packages\django\template\__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "C:\Python25\Lib\site-packages\django\template\debug.py" in render_node 
    81.    raise wrapped 

Exception Type: TemplateSyntaxError at /hospitalists/ 
Exception Value: Caught an exception while rendering: Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x05016DD0>' with arguments '(7L,)' and keyword arguments '{}' not found. 

Original Traceback (most recent call last): 
    File "C:\Python25\Lib\site-packages\django\template\debug.py", line 71, in render_node 
    result = node.render(context) 
    File "C:\Python25\Lib\site-packages\django\template\defaulttags.py", line 155, in render 
    nodelist.append(node.render(context)) 
    File "C:\Python25\Lib\site-packages\django\template\defaulttags.py", line 382, in render 
    raise e 
NoReverseMatch: Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x05016DD0>' with arguments '(7L,)' and keyword arguments '{}' not found. 

Merci pour votre aide, Pete

+0

Veuillez publier le retraçage complet. –

+0

slypete - essayez de supprimer tous les '{% url ...%}' de la boucle '{% for patient in patients%}' et voyez si cela empêche l'exception. Si c'est le cas, alors vous avez une inversion d'URL non résolue qui se passe quelque part. –

+0

Échec sur tout {%%}. D'une simple impression à une inversion d'url. – slypete

Répondre

1

J'ai eu un problème avec ma configuration apache:

J'ai changé ceci:

SetEnv DJANGO_SETTINGS_MODULE paramètres

à ceci:

SetEnv DJANGO_SETTINGS_MODULE booster.settings

Pour résoudre le problème de connexion d'authentification defualt, j'ai ajouté le paramètre settings.LOGIN_URL.

0

Après avoir googlé ce un peu, il semble que vous devrez peut-être supprimer tous les fichiers .pyc sur le serveur et laisser il les recompile la première fois qu'ils sont accédés.

+0

Ce n'est pas malheureusement. – slypete

+0

L'autre chose qui vient à l'esprit est de s'assurer que Production exécute Python 2.4 ou plus récent. Cependant, j'ai juste supposé que ce n'était pas le problème (et supprimé la réponse que j'avais écrit qui a dit cela). – Powerlord

0

Il s'agit d'une «erreur fantôme» assez courante dans Django. En d'autres termes, il y a un bogue dans votre code, mais la page de débogage renvoie une exception trompeuse. Habituellement, quand je vois cette erreur, c'est parce que j'ai vissé quelque chose dans un tag d'URL dans un de mes modèles - le plus souvent une URL mal orthographiée ou une url pour une vue que je n'ai pas encore écrite. La plupart du temps, la page de débogage de Django mettra même en évidence l'URL d'origine de l'erreur.

Questions connexes