django 站点管理

django.contrib 包

管理工具是django.contrib的一部分

站点管理工具(django.contrib.admin)

用户鉴别系统(django.contrib.auth)

支持匿名会话(django.contrib.sessioins)

用户评注系统(django.contrib.comments)

激活管理界面

第一步,修改settings.py:

  1. 'django.contrib.admin' 加入setting的INSTALLED_APPS

  1. INSTALLED_APPS 中必须包含'django.contrib.auth''django.contrib.contenttypes''django.contrib.sessions' ,Django的管理工具需要这3个包

  1. 确保MIDDLEWARE_CLASSES 包含'django.middleware.common.CommonMiddleware''django.contrib.sessions.middleware.SessionMiddleware' 和‘django.middleware.locale.LocaleMiddleware‘支持中文,'django.contrib.auth.middleware.AuthenticationMiddleware'

运行 python manage.py syncdb 。这一步将生成管理界面使用的额外数据库表。 当你把'django.contrib.auth' 加进INSTALLED_APPS 后,第一次运行syncdb 命令时, 系统会请你创建一个超级用户。 如果你不这么作,你需要运行python manage.py createsuperuser 来另外创建一个admin的用户帐号,否则你将不能登入admin (提醒一句: 只有当INSTALLED_APPS 包含'django.contrib.auth' 时,python manage.py createsuperuser 这个命令才可用.)

第三,将admin访问配置在URLconf(记住,在urls.py 中). 默认情况下,命令django-admin.py startproject 生成的文件urls.py 是将Django admin的路径注释掉的,你所要做的就是取消注释。 请注意,以下内容是必须确保存在的:

from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# ...
(r'^admin/', include(admin.site.urls)),
# ...
)

启动开发服务器 python manage.py runserver,访问:http://127.0.0.1:8000/admin/


将Models加入到Admin管理中

在books(app)目录下创建一个文件:`` admin.py`` ,然后输入以下代码:

from django.contrib import admin
from mysite.books.models import Publisher, Author, Book
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)

Admin 管理 如何工作的

服 务启动,Django从`` url.py`` 引导URLconf,执行`` admin.autodiscover()`` ,autodiscover()遍历INSTALLED_APPS配置,并寻找相关的 admin.py文件。 如果在指定的app目录下找到admin.py,它就执行其中的代码。

在`` books`` 应用程序目录下的`` admin.py`` 文件中,每次调用`` admin.site.register()`` 都将那个模块注册到管理工具中。 管理工具只为那些明确注册了的模块显示一个编辑/修改的界面。

应 用程序`` django.contrib.auth`` 包含自身的`` admin.py`` ,所以Users和Groups能在管理工具中自动显示。 其它的django.contrib应用程序,如django.contrib.redirects,其它从网上下在的第三方Django应用程序一样, 都会自行添加到管理工具。

综上所述,管理工具其实就是一个Django应用程序,包含自己的模块、模板、视图和URLpatterns。 你要像添加自己的视图一样,把它添加到URLconf里面。 你可以在Django基本代码中的django/contrib/admin 目录下,检查它的模板、视图和URLpatterns,但你不要尝试直接修改其中的任何代码,因为里面有很多地方可以让你自定义管理工具的工作方式。 (如果你确实想浏览Django管理工具的代码,请谨记它在读取关于模块的元数据过程中做了些不简单的工作,因此最好花些时间阅读和理解那些代码。)

自定义ModelAdmi类

blank=True、null=True和verbose_name修改其实是模块级别,而不是管理级别的。

Django还提供了大量选项针对特别的模块自定义管理工具。

这些选项都在ModelAdmin classes 里面,这些类包含了管理工具中针对特别模块的配置。

1.自定义列表、表单

from django.contrib import admin
from mysite.books.models import Author
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email')#列表字段设置
search_fields = ('first_name', 'last_name')#查询设置
admin.site.register(Author, AuthorAdmin)#为Author 模块定义一个ModelAdmin
我们新建了一个类AuthorAdmin ,它是从django.contrib.admin.ModelAdmin 派生出来的子类,
保存着一个类的自定义配置,以供管理工具使用。 我们只自定义了一项:list_display
它是一个字段名称的元组,用于列表显示。 当然,这些字段名称必须是模块中有的。
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'publisher', 'publication_date')
    list_filter = ('publication_date',)
    date_hierarchy = 'publication_date' #日期过滤方式
    ordering = ('-publication_date',)   #倒序
    fields = ('title', 'authors', 'publisher', 'publication_date')#自定义表单,也可隐藏某个字段
    filter_horizontal = ('authors',)#多对多表单控件样式,支持多个字段,可选filter_vertical垂直排列
  
raw_id_fields = ('publisher',)#打开新页面列表可选项

猜你喜欢

转载自yixiusztx.iteye.com/blog/1580014
今日推荐