2012-12-15 5 views
5

Próbuję dodać aplikację blog do mojego projektu Django. Kiedy umieszczam wszystko razem, widzę stronę moich blogów, ale coś z plikiem blogapp/urls.py powoduje, że mam gdzieś maksymalny błąd rekursji i ciężko mi go znaleźć. Po pierwsze, tutaj jest komunikat o błędzie w całości:Django/Python Runtime Error: Maksymalna głębokość rekursji przekroczyła

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/antonioalaniz1/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/antonioalaniz1/tmp/newproject/DJANGO/bin/python 
Python Version: 2.7.1 

Oto urlpatterns zmienne z mysite/urls.py:

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

A to moja blogapp plik/urls.py:

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/antonioalaniz1/tmp/newproject/DJANGO/mysite/templates/blogapp/blog.htm l")),  
    url(r'^blog/', include('blogapp.urls')), 
) 

A na dokładkę, to moja blogapp/plik models.py:

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 

Odpowiedz

16

Wydaje się, że w tym blogapp.urls wewnątrz siebie. To nie brzmi jak dobry pomysł.

+0

Uch! To był dokładnie problem! Dziękuję bardzo, nie wiem, dlaczego tego nie złapałem! –

+0

Jestem w podobnej sytuacji. co to jest alternatywa? – Volatil3

+0

Dzięki @Daniel, miałem podobny problem w skrypcie w języku Python i wynikało to z problemu z importowaniem (niepoprawna kolejność). Bez Twojej podpowiedzi nadal bym się z tym czuł. Dzięki ! – VivienG

-2

Przypuszczam próbujesz utworzyć właściwości obiektów członków

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

która powinna idealnie przejść do metody konstruktora pod

def __init__(self): 
''represents a class instance of a blog entry''' 
    title = models.CharField(max_length=100) 
    created = models.DateTimeField() 
    body = models.TextField() 
+0

Niestety, ja błędnie komentarza. Powinno być "reprezentuje wpis na blogu", "klasa" nie była tym, na co miałem ochotę (błąd newb). –

2

Ja również zmierzyć się z tym problemem, gdy kod jak ten

logout call logout again

def logout(request): print 'under logout user ++++++++++++++' + str(request.POST) logout(request) return redirect('/home/')

+1

To dlatego, że widok nazywa się wylogowaniem, więc gdy wywołujesz wylogowanie (żądanie), widok sam wywołuje się, powodując nieskończoną rekursję. – Kevin

0

Problemem jest to, że metoda Django wylogowania jest w swojej metodzie widok wylogowania. Tak się nazywa i nigdy się nie kończy.

Możesz zmienić nazwę metody wylogowania z widoku na "wylogowanie" lub coś w tym stylu.

Innym sposobem jest import django wylogowania z innej nazwy jak poniżej i nazwał go w swoim sposobie wylogowania: z django.contrib.auth importowej wylogowania jako core_logout