应用在Django后台不显示
我看过其他所有的讨论,但还是不明白为什么我的应用在Django的管理后台不显示。其他功能都正常。
我的应用已经在settings.py文件里列出来了。
我在根目录的urls.py文件里有写admin.autodiscover。
from django.conf.urls.defaults import *
from django.conf import settings
from django.views.generic.simple import direct_to_template
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', direct_to_template, {
"template": "homepage.html",
}, name="home"),
url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"),
url(r'^account/signup/$', "signup_codes.views.signup", name="acct_signup"),
(r'^account/', include('account.urls')),
(r'^profiles/', include('basic_profiles.urls')),
(r'^notices/', include('notification.urls')),
(r'^announcements/', include('announcements.urls')),
(r'^tagging_utils/', include('tagging_utils.urls')),
(r'^attachments/', include('attachments.urls')),
(r'^comments/', include('threadedcomments.urls')),
#
(r'^wayfinder/', include('wayfinder.urls')),
(r'^site/', include('jsite.urls')),
(r'^kiosk/', include('kiosk.urls')),
(r'^navigator/', include('navigator.urls')),
(r'^location/', include('location.urls')),
(r'^event/', include('event.urls')),
#(r'^news_reader/', include('news_reader.urls')),
#(r'^weather_reader/', include('weather_reader.urls')),
(r'^admin/(.*)', admin.site.root),
)
if settings.SERVE_MEDIA:
urlpatterns += patterns('',
(r'^site_media/', include('staticfiles.urls')),
)
我的所有应用都有一个admin.py文件,里面包含类似这样的内容:
from django.contrib import admin
from event.models import Event
class EventAdmin(admin.ModelAdmin):
list_display = (
'short_name',
'long_name',
'locations',
'categories',
'description',
'phone',
'email',
'url_source',
'url_location',
'external_ref',
'show_event'
)
admin.site.register(Event, EventAdmin)
而且我已经反复重启服务器了;-)
我是在Pinax的基础上开发,但根据我的理解,这不应该影响任何东西。有没有人知道可能出什么问题了?
9 个回答
5
你是不是以超级用户的身份登录到管理员界面?如果不是,那可能是权限的问题。
7
今天早上我也碰到了同样的问题。简单来说,这里是我找到的解决办法(具体细节可以参考下面的链接):
在我的应用程序 MyApp 的顶层目录(也就是和 models.py 在同一个文件夹里)我添加了一个叫 admin.py 的 Python 模块,内容是:
from models import ThisModel, ThatModel
from django.contrib import admin
admin.site.register(ThisModel)
admin.site.register(ThatModel)
然后在 mysite 目录下我运行了 syncdb 和 runserver,这样 ThisModel 和 ThatModel 就出现在了管理界面里。
这样对你有用吗?
祝好
伊万
** 参考资料
(我是新成员,所以只能发一个链接!)
最近在 Pinax 的谷歌小组里也有一个问题,标题是“如何将我的应用添加到 Pinax 项目的管理界面?”
10
你在settings.py文件的INSTALLED_APPS部分里添加了你的应用吗?
确保你的应用在这里列出来了。我的这一部分是这样的:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.sites',
'squick.items',
'cowsite.search',
'cowsite.posts',
)
比如说。我很确定出于安全考虑,如果你的应用不在已安装的应用里,它们是不会出现在管理后台的。我之前也遇到过类似的问题,就是无法在管理后台看到cowsite。
Django的文档提到关于管理页面的内容:“默认情况下,它会按字母顺序显示所有在INSTALLED_APPS中注册的应用。”