Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django/Python Runtime Error: Maximum recursion depth exceeded

I am trying to add a blog app to my Django project. When I put everything together, I can see my blog posts page, but something with the blogapp/urls.py file is causing me to get a maximum recursion error somewhere and I'm having a hard time finding it. First, here is the error message in full:

RuntimeError at /admin/
maximum recursion depth exceeded while calling a Python object
Request Method: GET
Request URL:    localhost/admin/  #I edited this due to a posting error
Django Version: 1.4
Exception Type: RuntimeError
Exception Value:    
maximum recursion depth exceeded while calling a Python object
Exception Location: /Users/User/tmp/newproject/DJANGO/lib/python2.7/site-packages/Django-1.4-py2.7.egg/django/utils/translation/trans_real.py in get_language, line 222
Python Executable:  /Users/User/tmp/newproject/DJANGO/bin/python
Python Version: 2.7.1

Here is the urlpatterns variable from mysite/urls.py:

urlpatterns = patterns('',
    url(r'^polls/', include('polls.urls')),
    url(r'^blogapp/', include('blogapp.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

And this is my blogapp/urls.py file:

from django.conf.urls import patterns, include, url
from django.views.generic import ListView
from blogapp.models import Post
urlpatterns = patterns('',
    url(r'^', ListView.as_view(queryset=Post.objects.all().order_by("-created")[:2],
                            template_name="/Users/User/tmp/newproject/DJANGO/mysite/templates/blogapp/blog.htm    l")),     
    url(r'^blog/', include('blogapp.urls')),
)

And, for good measure, this is my blogapp/models.py file:

from django.db import models

class Post(models.Model):
    '''represents a class instance of a blog entry'''
    title = models.CharField(max_length=100)
    created = models.DateTimeField()
    body = models.TextField()

    def __unicode__(self):
        return self.title
like image 836
Sandwich Heat Avatar asked Dec 15 '12 13:12

Sandwich Heat


People also ask

How do I fix maximum recursion depth exceeded in comparison Python?

Conclusion. The recursion depth limit in Python is by default 1000 . You can change it using sys. setrecursionlimit() function.

What is recursion error in Django?

As the name suggests, Recursionerror may occur when we are dealing with recursive functions. When we run the recursion function for a large number of times, recursion error is thrown. Python has a limit on the number of times a recursive function can call itself.

How do you stop recursion errors in Python?

Try increasing the recursion limit ( sys. setrecursionlimit ) or re-writing your code without recursion. Return the current value of the recursion limit, the maximum depth of the Python interpreter stack. This limit prevents infinite recursion from causing an overflow of the C stack and crashing Python.

How do you fix maximum recursion depth exceeded?

The “maximum recursion depth exceeded in comparison” error is raised when you try to execute a function that exceeds Python's built in recursion limit. You can fix this error by rewriting your program to use an iterative approach or by increasing the recursion limit in Python.


2 Answers

You seem to be including blogapp.urls inside itself. Doesn't sound like a good idea.

like image 86
Daniel Roseman Avatar answered Oct 13 '22 14:10

Daniel Roseman


The problem is that django logout method is in your view logout method. So it calls itself and never ends.

So you may rename your view logout method as 'signout' or something like that.

Other way is import django logout with other name like below and called it in your logout method: from django.contrib.auth import logout as core_logout

like image 32
Dat TT Avatar answered Oct 13 '22 14:10

Dat TT