Django学习之admin site

  • 登录管理员页面

首先,我们需要一个管理员账户,这样我们才能登录到管理员页面。

tmyyss@ubuntu:~/python/django/myproject$ python manage.py createsuperuser
Username: admin
Email address: admin@163.com
Password: 
Password (again): 
Superuser created successfully.

启动开发服务器

tmyyss@ubuntu:~/python/django/myproject$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
March 27, 2015 - 01:27:27
Django version 1.7.7, using settings 'myproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

打开浏览器,在浏览器中输入http://127.0.0.1/admin,回车,然后输入刚才创建的管理员账户名和密码。

就会显示如下页面

虽然进入了管理员界面,但是我们如何管理我们创建的应用呢?

我们还需要做一件事,得告诉管理员我们创建的某个应用对象有管理员接口,修改blog/admin.py

from django.contrib import admin
from models import Blog     //导入Blog类

# Register your models here.
admin.site.register(Blog)  告诉管理员,Blog拥有管理员接口

然后,我们再次输入http://127.0.0.1:8000/admin/

点击Blogs,我们能看到我们已经添加的文章,点击文章,我们能修改其中的内容;同时注意到右上角有一个“Add blog"的按钮,点击,我们可以添加新的文章。

  • 定制管理员页面

通过注册Blog,管理员界面会创建一个默认的表单,如上面几个图例所示,但是有时候,我们需要定制我们自己的管理员界面。

我们发现一个问题,上图显示的只是文章的标题(title);我们想同时显示创建时间,怎么办呢?

只需修改blog/admin.py如下就行

from django.contrib import admin
from models import Blog

class Blogadmin(admin.ModelAdmin):
    list_display=('title','created_time') //表示要显示的有两个fields,一个titel,一个created_time.

admin.site.register(Blog,Blogadmin)

刷新下刚才的页面,我们发现变成了如下

我们可以通过点击”title"、”created_time"来对已经存在的文章进行排序

我们也可以添加其它的过滤规则。修改blog/admin.py

from django.contrib import admin
from models import Blog

class Blogadmin(admin.ModelAdmin):
    list_display=('title','created_time')
    list_filter=['created_time']    //将会在页面中加入一个时间过滤的slidebar

admin.site.register(Blog,Blogadmin)

页面效果

修改完了这个列表界面,我们又对添加博客中各个Fields的排列顺序不满意,咋办,继续修改blog/admin.py

from django.contrib import admin
from models import Blog

class Blogadmin(admin.ModelAdmin):
    list_display=('title','created_time')
    fields=['title','text','created_time','published_time','user']  //通过调整fields
列表中各个元素的显示顺序来调整页面中的显示顺序
admin.site.register(Blog,Blogadmin)

我们再来看一下创建博客界面,我们发现user,放到了最下面

恩,还是看得不爽,我们现在给每个fieds添加一个标题

from django.contrib import admin
from models import Blog

class Blogadmin(admin.ModelAdmin):
    list_display=('title','created_time')
    fieldsets=[
        ('author',{'fields':['user']}),
        ('title',{'fields':['title']}),
        ('text',{'fields':['text']}),
        ('Date infomation',{'fields':['created_time','published_time'],'classes':['collapse']}),
    ]  //fiedsets可以对fields的显示效果进行设置

admin.site.register(Blog,Blogadmin)

让我们来看一下效果。

我们看到每个fields都添加了标题,同时我们也发现时间日期被隐藏了,这是"classes":["collapse"]达成的效果。

原文地址:https://www.cnblogs.com/tmyyss/p/4371182.html