您的位置:首页 > 运维架构 > 网站架构

2、django管理网站

2017-05-21 14:00 225 查看
该系列的博客都是按照这个教程上面的内容整理总结出来的,主要是为了方便自己复习和巩固的。http://www.kancloud.cn/wizardforcel/django-chinese-docs-18/98847。该教程确实不错。

1、启动上面章节的项目:

python manage.py runserver


现在,打开一个浏览器并在本地域名上访问 “/admin/” – 例如 http://127.0.0.1:8000/admin/ 。你将看到管理员的登录界面:  



 

现在尝试登录进去, 你将看到 Djaong 的管理索引页:



 

2、使 poll 应用的数据在管理网站中可编辑

  只需要做一件事:我们需要告诉管理网站 Poll 对象要有一个管理界面。为此,我们在你的 polls 目录下创建一个名为 admin.py 的文件,并添加如下内容:

from django.contrib import admin
from polls.models import Poll
admin.site.register(Poll)




通过 admin.site.register(Poll) 注册了 Poll 模型,Django 就能构造一个默认的 表单。通常情况下,你将要自定义管理表单的外观和功能。这样的话你就需要在注册对象 时告诉 Django 对应的配置。让我们来看看如何在编辑表单上给字段重新排序。修改admin.py文件将 admin.site.register(Poll) 这行替换成:

class PollAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question']

admin.site.register(Poll, PollAdmin)




你将遵循这个模式 – 创建一个模型的管理对象,将它作为 admin.site.register() 方法的第二个参数传入 – 当你需要为一个对象做管理界面配置的时候。

3.刚才所说的有许多字段的表单,你可能想将表单中的字段分割成 fieldsets :

class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None,               {'fields': ['question']}),
('Date information', {'fields': ['pub_date']}),
]

admin.site.register(Poll, PollAdmin)




4.添加关联对象 

现在我们有了 Poll 的管理页面。但是一个 Poll 拥有多个 Choices ,而 该管理页面并没有显示对应的 choices 。

是的。

我们有两种方法来解决这个问题。第一种就像刚才 Poll 那样在管理网站上 注册 Choice 。这很简单:

from polls.models import Choice

admin.site.register(C
4000
hoice)


  


具体的操作,可以自己去用鼠标点击看看。

第二种方法:移除对 Choice 模型的 register() 方法调用 。然后,将 Poll 的注册代码 编辑为如下所示:

from django.contrib import admin
from polls.models import Choice, Poll

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]

admin.site.register(Poll, PollAdmin)


这将告诉 Django: “Choice 对象在 Poll 管理页面中被编辑。 默认情况下,提供 3 个 choices 的字段空间。



还有个小问题。为了显示所有关联 Choice 对象的字段需要占用大量的 屏幕空间。为此,Django 提供了一个以表格方式显示内嵌有关联对象的方式; 你只需要将 ChoiceInline 声明改为如下所示:

class ChoiceInline(admin.TabularInline):
#...






5.自定义管理界面的变更列表。

现在 Poll 的管理界面看起来不错了,让我们给 “chang list” 页面做些调整 – 显示系统中所有 polls 的页面。下面是现在的样子:



默认情况下, Django 显示的是每个对象 str() 或者__unicode__(self)的结果。但是若是我们能够 显示每个字段的话有时会更有帮助的。要做到这一点,需要使用 list_display 管理选项,这是一个 tuple ,包含了要显示的字段名, 将会以列的形式在该对象的 chang lsit 页上列出来:

class PollAdmin(admin.ModelAdmin):
# ...
list_display = ('question', 'pub_date')


现在 poll 的变更列表页看起来像这样:



 效果类似于下面这样的:



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: