我是第一次在Django中创建一个Python应用程序。我知道我必须取消注释urls.py中的管理工具,我已经这样做了。我还添加了autodiscover
。每次我尝试向管理面板添加新功能时,都会收到此错误:
“NameError:名称'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]
这是我正在使用的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)
答案 0 :(得分:10)
from django.config import admin
应为from django.contrib import admin
答案 1 :(得分:5)
在**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)),**
)
答案 2 :(得分:1)
经过漫长而痛苦的追求来解决这个愚蠢的问题之后,我终于找到了答案!另一个Django程序员遇到了同样的问题,发现了这个:
在ChoiceInLine的父母(你在教程中你会看到'admin.StackedInline')中,堆叠的内联不应该被资本化......它就像那样简单......比Karen Tracey多得多。 ..
答案 3 :(得分:1)
我这样更改了我的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 :(得分:0)
我怀疑您的模型文件中没有from django.contrib import admin
,您定义了ModelAdmin
个类class ChoiceInline(admin.StackedInline):
。
答案 5 :(得分:0)
您应该将管理代码(#COMMENTED OUT之后的所有内容直到我修复管理员名称)放到admin.py
答案 6 :(得分:0)
为我解决此问题的一种方法是将其添加到admin.py
的开头:
from django.contrib import admin