ReiGun
ReiGun

Reputation: 123

Django Template Context Error

I'm getting "maximum recursion depth exceeded" when I try to run my template context processor.

settings.py looks like this:

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',
    'web.context_content.base_context',
)

web/context_content.py:

from web import models
from django.shortcuts import render
from django.shortcuts import render_to_response
from django.template import RequestContext
#from django.conf import settings

def base_context(request):

    categories = models.Category.objects.filter()

    return render(request, "base.html", {'categories':categories})

Not sure why i'm getting such an odd error

UPDATE: my urls.py (site):

from django.conf.urls.defaults import *
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.conf import settings
from django.contrib.auth.views import login, logout
from web import views
from web import forms

admin.autodiscover()

urlpatterns = i18n_patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^register/$', views.register),
    url(r'^login/$', views.login),
    #url(r'^index/$', include('web.urls'))
    url(r'^', include('cms.urls'))
)

if settings.DEBUG:
    urlpatterns = patterns('',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
    url(r'', include('django.contrib.staticfiles.urls')),
) + urlpatterns

I'm not using my app's urls.py for anything. But here it is anyway:

from django.conf.urls.defaults import *
from django.contrib import admin
from django.conf import settings
from django.conf.urls import patterns, include, url
from web import views
from web import forms

admin.autodiscover()

urlpatterns = patterns('web.views',
    #url(r'^', views.base_context),
)

Upvotes: 2

Views: 206

Answers (1)

Daniel Roseman
Daniel Roseman

Reputation: 599450

I'm not sure what you are trying to do with that context processor. They are for adding items to the template context, and should always return a dictionary: but for some reason you are rendering a template inside your function. Since the context processors are called by the render shortcut, your function end up calling itself, hence the infinite recursion.

Don't render a template in your context processor.

Upvotes: 1

Related Questions