首页 > 代码库 > Python框架之Django学习笔记(十二)
Python框架之Django学习笔记(十二)
Django站点管理
十一转眼结束,说好的充电没能顺利开展,反而悠闲的看了电视剧以及去影院看了新上映的《心花路放》、《亲爱的》以及《黄金时代》,说好的劳逸结合现在回首看去,如果睡觉吃饭算是的话,那倒是挺多。是啊,十一过去了,也该收收心,开始准备过年了。啊,不对,准备工作。扯淡到此结束,接下来,开始学习Django的站点管理。
管理界面有一问题: 创建它太繁琐。 当你开发对公众的功能时,网页开发是有趣的,但是创建管理界面通常是千篇一律的。 你必须认证用户,显示并管理表格,验证输入的有效性诸如此类。 这很繁琐而且是重复劳动。Django 在对这些繁琐和重复的工作进行了哪些改进? 它用不能再少的代码为你做了所有的一切。 Django 中创建管理界面已经不是问题。本次博客是关于 Django 的自动管理界面。 这个特性是这样起作用的: 它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作。
django.contrib 包
Django自动管理工具是django.contrib的一部分。django.contrib是一套庞大的功能集,它是Django基本代码的组成部分,Django框架就是由众多包含附加组件(add-on)的基本代码构成的。 你可以把django.contrib看作是可选的Python标准库或普遍模式的实际实现。 它们与Django捆绑在一起,这样你在开发中就不用“重复发明轮子”了。
管理工具是django.contrib的一个部分。从技术层面上讲,它被称作django.contrib.admin。django.contrib中其它可用的特性,如用户鉴别系统(django.contrib.auth)、支持匿名会话(django.contrib.sessioins)以及用户评注系统(django.contrib.comments)。在成为一个Django专家以前,你将会知道更多django.contrib的特性。 目前,你只需要知道Django自带很多优秀的附加组件,它们都存在于django.contrib包里。
激活管理界面
第一步,对你的settings文件做如下这些改变:
- 将‘django.contrib.admin‘加入setting的INSTALLED_APPS配置中 (INSTALLED_APPS中的配置顺序是没有关系的, 但是我们喜欢保持一定顺序以方便人来阅读)
- 保证INSTALLED_APPS中包含‘django.contrib.auth‘,‘django.contrib.contenttypes‘和‘django.contrib.sessions‘,Django的管理工具需要这3个包。 (如果你跟随本文制作mysite项目的话,那么请注意我们在上次学习的时候把这三项INSTALLED_APPS条目注释了。现在,请把注释取消。)
- 确保MIDDLEWARE_CLASSES 包含‘django.middleware.common.CommonMiddleware‘、‘django.contrib.sessions.middleware.SessionMiddleware‘和‘django.contrib.auth.middleware.AuthenticationMiddleware‘ 。(再次提醒,如果有跟着做mysite的话,请把在前面加的注释取消。)
第二步,运行 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的路径注释掉的,你所要做的就是取消注释。 请注意,以下内容是必须确保存在的:
1 # Include these import statements... 2 from django.contrib import admin 3 admin.autodiscover() 4 5 # And include this URLpattern... 6 urlpatterns = patterns(‘‘, 7 # ... 8 (r‘^admin/‘, include(admin.site.urls)), 9 # ...10 )
当这一切都配置好后,现在你将发现Django管理工具可以运行了。 启动开发服务器(如前:`` python manage.py runserver`` ),然后在浏览器中访问:http://127.0.0.1:8000/admin/。
管理界面介绍
管理界面的设计是针对非技术人员的,所以它应该是自我解释的。 尽管如此,这里简单介绍一下它的基本特性。
你看到的第一件事是如下图所示的登录界面。
你要使用你原来设置的超级用户的用户名和密码。 如果无法登录,请运行“ python manage.py createsuperuser” ,确保你已经创建了一个超级用户。
一旦登录了,你将看到管理页面。 这个页面列出了管理工具中可编辑的所有数据类型。 现在,由于我们还没有创建任何模块,所以这个列表只有寥寥数条类目: 它仅有两个默认的管理-编辑模块:用户组(Groups)和用户(Users)。
其他语言:
想一秒钟改变语言的类型么,Django完全可以很轻松的做到,打开settings.py文件,找到下面部分:
1 LANGUAGE_CODE = ‘en-us‘2 #LANGUAGE_CODE = ‘de-ch‘3 #LANGUAGE_CODE = ‘de-at‘4 #LANGUAGE_CODE = ‘pt-br‘5 #LANGUAGE_CODE = ‘zh-cn‘
将第一行改为第五行,刷新下界面,你便发现你的管理站点已经变成了全中文版。
将你的Models加入到Admin管理中
让我们将自己的模块加入管理工具中,这样我们就能够通过这个漂亮的界面添加、修改和删除数据库中的对象了。 我们将继续上次的“ book” 例子。在其中,我们定义了三个模块:Publisher 、 Author 和 Book 。
打开“books” 目录下(“mysite/books”)的文件:“admin.py” ,然后输入以下代码:
1 from django.contrib import admin2 from books.models import Publisher, Author, Book3 4 admin.site.register(Publisher)5 admin.site.register(Author)6 admin.site.register(Book)
完成后,打开页面 “http://127.0.0.1:8000/admin/” ,你会看到一个Books区域,其中包含Authors、Books和Publishers。
现在你拥有一个功能完整的管理界面来管理这三个模块了。 很简单吧!
Python框架之Django学习笔记(十二)