我正在尝试将博客应用程序添加到我的 Django 项目中。当我把所有东西放在一起时,我可以看到我的博客文章页面,但是blogapp/urls.py文件的某些东西导致我在某处得到最大的递归错误,我很难找到它。首先,这是完整的错误消息:
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
以下是来自mysite/urls.py的urlpatterns变量:
urlpatterns = patterns('',
url(r'^polls/', include('polls.urls')),
url(r'^blogapp/', include('blogapp.urls')),
url(r'^admin/', include(admin.site.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/User/tmp/newproject/DJANGO/mysite/templates/blogapp/blog.htm l")),
url(r'^blog/', include('blogapp.urls')),
)
而且,为了更好地衡量,这是我的博客应用程序/模型.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
你似乎在里面包含了blogapp.urls。听起来不是一个好主意。
问题是 django 注销方法在你的视图中 注销方法。所以它自称,永无止境。
因此,您可以将视图注销方法重命名为"注销"或类似名称。
另一种方法是使用如下所示的其他名称导入 django 注销,并在您的注销方法中调用它:从 django.contrib.auth 导入注销为 core_logout
我得到了类似的错误:
递归错误:比较中超过了最大递归深度
在"save()"中创建和保存"Person"对象时,在"Person"类中被覆盖,如下所示:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
# ...
def save(self, *args, **kwargs): # Here
person = Person(first_name='Soi', last_name='Tato')
person.save()
所以,似乎"person.save()"一次又一次地在"Person"类中调用"save()",然后最终导致错误。
我假设您正在尝试创建成员对象属性
''represents a class instance of a blog entry'''
title = models.CharField(max_length=100)
created = models.DateTimeField()
body = models.TextField()
理想情况下,它应该进入构造函数方法下
def __init__(self):
''represents a class instance of a blog entry'''
title = models.CharField(max_length=100)
created = models.DateTimeField()
body = models.TextField()