`
qzriso
  • 浏览: 242370 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

Django笔记5(管理站点)

阅读更多
1.激活管理界面
(1)选择需要管理的model
books下创建一个文件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)

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
分享到:
评论
1 楼 huaxia524151 2011-07-05  
谢谢,解决问题。return self.name.encode('utf-8') 插入中文数据
sqlite数据库的字符集需要设置吗?我的没设置,也能中文。

相关推荐

Global site tag (gtag.js) - Google Analytics