您的位置:首页 > 编程语言 > Go语言

Django学习笔记之【管理(admin)界面设置】

2013-02-06 13:57 543 查看
1.激活管理界面

(1)选择需要管理的model
APP目录下下创建一个文件admin.py

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

(2) 请确认”django.contrib.sessions”,”django.contrib.auth”,和 “django.contrib.contenttypes” 前面的注释已去掉,因为管理程序需要它们。请同时去掉所有 MIDDLEWARE_CLASSES 设置行中的注释,并清除 TEMPLATE_CONTEXT_PROCESSOR 设置,以便它可以重新使用缺省值。

(3) 运行 python manage.py syncdb 。这一步将生成管理界面使用的额外数据库表。在 INSTALLED_APPS 里有 “django.contrib.auth” 的情况下,当你第一次运行 syncdb 时会被问是不是需要创建超级用户。如果你在那时不做这个事情,你需要运行 python manage.py createsuperuser 来创建有管理权的用户。否则你不可能登录进管理界面。

(4)urls.py设置

from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
)

现在你可以访问 Django 给你的URL (http://127.0.0.1:8000/admin/ 在进行的例子中),登录,随便看看。

2. 定制管理界面
修改admin.py

from django.contrib import admin
from mysite.books.models import Book, Author, Publisher

class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publisher', 'publication_date')
ordering = ('-publication_date',)
search_fields = ('title',)

admin.site.register(Book,BookAdmin)
admin.site.register(Publisher)
admin.site.register(Author)

解析:

这些定义中的每一行都告诉admin来构建一个不同的界面:

1,ordering选项控制了对象在admin里面显示的顺序,它是对结果排序的域的列表

前面加一个减号将排反序,所以例子中我们对publication_date排序,最近的书将显示在最前面

2,list_display选项控制了在改动列表里哪些列将显示,默认情况下将只显示对象的string展示

这一个单独的列,这里我们显示title,publisher和publication_date

3,list_filter选项将在列表的右上方创建过滤器条,我们允许通过date和publisher来过滤

你可以让admin过滤任何域,但是外键或者有chioces属性集的域工作的更好

4,最后search_fields选项创建一个允许文本搜索的域,这里允许通过title域搜索

通过这里以及第12章描述的选项你可以只用几行代码构建一个强大的具备产品能力的编辑数据界面

 

 

3. 定制管理界面的外观

管理站点的头部区域在模板 admin/base_site.html 里。缺省情况下,这个模板在 Django管理模板目录 django/contrib/admin/templates 里,你可以在Django的安装目录找到它,例如Python的 site-packages 目录或者你安装的其他目录。要自定义这个 base_site 模板,把这个模板拷贝到你的模板目录下的 admin 子目录。例如,假定你的模板目录是 “/home/mytemplates”,拷贝django/contrib/admin/templates/admin/base_site.html到
/home/mytemplates/admin/base_site.html 。不要忘了有 admin 子目录。然后,编辑这个新 admin/base_site.html 文件,替换你自己站点的名称上去。

备注:每个Django缺省的管理模板都可以重载。要重载一个模板,就象 base_site.html 一样的去做:把它从缺省目录中拷贝到你自己的模板目录中然后修改它。

4.关于中文数据的修正

(1)插入中文数据出错

建数据库的时候需将字符集设置为:utf8 utf8_general_ci,不然以后诸多问题

(2)出现’ascii’ codec can’t encode characters in position 0-2错误

更改model的str函数

def __str__(self):
return self.name.encode('utf-8')

或(未验证)

def __unicode__(self):
return self.name

转自 http://www.qwolf.com/?p=158
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: