简体   繁体   中英

django @login_required decorator error

I'm running django 1.1rc. All of my code works correctly using django's built in development server; however, when I move it into production using Apache's mod_python, I get the following error on all of my views:

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

What might I look for that's causing this error?

Update: What's strange is that I can access the views account/login and also the admin site just fine. I tried removing the @login_required decorator on all of my views and it generates the same type of exception.

Update2: So it seems like there is a problem with any view in my custom package: booster. The django.contrib works fine. I'm serving the app at http://server_name/booster . However, the built-in auth login view redirects to http://server_name/accounts/login . Does this give a clue to what may be wrong?

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.

Thanks for your help, Pete

I had a problem with my apache configuration:

I changed this:

SetEnv DJANGO_SETTINGS_MODULE settings

to this:

SetEnv DJANGO_SETTINGS_MODULE booster.settings

To solve the defualt auth login problem, I added the setting settings.LOGIN_URL.

稍微搜索了一下,听起来您可能需要删除服务器上的任何.pyc文件,并在第一次访问它们时重新编译它们。

This is a pretty common 'phantom error' in Django. In other words, there's a bug in your code, but the debug page is spitting back a misleading exception. Usually when I see this error, it's because I've screwed something up in a url tag in one of my templates - most commonly a misspelled url or a url for a view that I haven't written yet. A lot of the times, the Django debug page will even highlight the url that the error is coming from.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM