Python 错误:未定义名称“管理员”
Posted
技术标签:
【中文标题】Python 错误:未定义名称“管理员”【英文标题】:Python Error: name 'admin' is not defined 【发布时间】:2012-08-31 22:34:57 【问题描述】:我是第一次在 Django 中创建 Python 应用程序。我知道我必须取消注释 urls.py 中的管理工具,我已经这样做了。我还添加了autodiscover
。每次我尝试向管理面板添加新功能时,都会收到此错误:
"NameError: name 'admin' is not defined"
这是我在模型中使用的要添加到管理面板的代码:
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, 'fields': ['question']),
('Date information', 'fields': ['pub_date'], 'classes': ['collapse']),
]
inlines = [ChoiceInline]
这是我正在使用的 python 终端中的代码
admin.site.register(Poll, PollAdmin)
这是来自我的 urls.py 的代码:
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'iFriends.views.home', name='home'),
# url(r'^iFriends/', include('iFriends.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
有人知道为什么找不到管理员名称吗?
编辑
这是我的整个模型文件:
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField()
def __unicode__(self):
return self.choice_text
#COMMENTED OUT UNTIL I FIX THE ADMIN NAME
from django.config import admin
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, 'fields': ['question']),
('Date information', 'fields': ['pub_date'], 'classes': ['collapse']),
]
inlines = [ChoiceInline]
#ADD THIS TO THE MAIN PYTHON FUNCTION
admin.site.register(Poll, PollAdmin)
【问题讨论】:
在您的 INSTALLED_APPS 中是 'django.contrib.admin' 吗? 是的。我已经使用同样的方法在管理面板中添加了一个“投票”部分。现在不行了 【参考方案1】:from django.config import admin
应该是from django.contrib import admin
【讨论】:
【参考方案2】:在**url.py**
文件的顶部,添加以下代码
from django.contrib import admin
admin.autodiscover()
所以特定的块应该如下所示
from django.conf.urls import patterns, include, url
**from django.contrib import admin
admin.autodiscover()**
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'examplesite.views.home', name='home'),
# url(r'^examplesite/', include('examplesite.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
#url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
**url(r'^admin/', include(admin.site.urls)),**
)
【讨论】:
【参考方案3】:我像这样更改我的 urls.py...这应该是基本格式
from django.conf.urls import include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
]
【讨论】:
【参考方案4】:经过漫长而痛苦的寻求解决这个愚蠢的问题后,我终于找到了答案!另一个 Django 程序员遇到了同样的问题,发现了这个:
在 ChoiceInLine 的父级中(您将在本教程中看到“admin.StackedInline”),StackedInline 中的 L 不应该大写……就这么简单……非常感谢 Karen Tracey。 ..
http://grokbase.com/p/gg/django-users/133v4wx0sx/django-1-5-tutorial-error-module-has-no-attribute-stackedinline
【讨论】:
这能回答问题吗?StackedInline
在问题中似乎大写正确。【参考方案5】:
我怀疑您在定义ModelAdmin
类的模型文件中没有from django.contrib import admin
,class ChoiceInline(admin.StackedInline):
。
【讨论】:
【参考方案6】:您应该将管理员代码(#COMMENTED OUT UNTIL I FIX THE ADMIN NAME 之后的所有内容)放入 admin.py
【讨论】:
【参考方案7】:为我解决这个问题的一种方法是在 admin.py
的开头添加它:
from django.contrib import admin
【讨论】:
以上是关于Python 错误:未定义名称“管理员”的主要内容,如果未能解决你的问题,请参考以下文章
Python / Access NameError:名称''未定义