BOOKMS是一个公司内部的图书管理系统。BOOKMS的后台管理主要使用Django的admin模块。
本系列用多次迭代方法,逐步实现一个图书管理系统BOOKMS。
本文主要介绍app的后台管理和用django-groundwork 生成前台CRUD。
上一回我们可以看到后台的界面了,但细心的你一定发现了里面没有我们要的book模型的管理。下面让我们把自定义的book模型加入到管理中,这样我们就能够通过这个漂亮的界面添加修改删除数据库中的对象了。
在bookapp的目录下创建一个文件admin.py,然后输入以下代码:
from django.contrib import admin from bookapp.models import * class BookAdmin(admin.ModelAdmin): pass admin.site.register(Book)
这些代码通知管理工具为这些模块逐一提供界面。然后我们重新运行一下再次访问http://127.0.0.1:8000/admin/,这回终于看见我们的模块和模型了。
这里有个小BUG要修改一下,打开python安装目录lib子目录里的site.py找到setencoding()方法
if 0: # Enable to support locale aware default string encodings. import locale loc = locale.getdefaultlocale() if loc[1]: encoding = loc[1]
if 0改为if 1,如果忽略此步下面添加里输入有中文会在保存时候出错
我们来添加2本图书,数据来源自豆瓣。
这里是后台的管理界面,这时我们基本可以对我们的模型进行全部的增删改查操作了。关于admin模块的详细修改和细化,后面详细介绍。
后台是可以使用了,但我们的前台还没有呢,当然作为一个懒人我们自己不会去一点点写,django-groundwork 会帮我们生成最基本的CRUD。
首先到https://github.com/madhusudancs/django-groundwork/downloads下载zip包。如果有安装git直接git获取。
下载的包解开后把django-groundwork文件夹复制到我们的project中,然后在setting.py里加入这个app
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'BOOKMS.bookapp', 'django-groundwork', )
接着我们还是盗命令行然后进入到我们的project目录运行:
python manage.py help
这里我们会发现多了一个groundwork命令。
接下来我们来为bookapp的Book生成页面:
python manage.py groundwork bookapp Book
输入Y确认,它就帮我们生成了。
这是运行项目并访问http://127.0.0.1:8000/bookapp/book/list/
三。groundwork 究竟帮我们干了什么
偷懒是不好的,我们起码 要知道groundwork 帮我们都干了什么,下面简单说明。
首先看bookms/urls.py:
urlpatterns += patterns ('', (r'^bookapp/', include('bookapp.urls')), )
这里帮我们加入一个路由,url里bookapp开头的都让我们自己的模块去处理。
然后我们在看看bookms/bookapp/urls.py:
将CRU(没有
urlpatterns = patterns('', (r'book/create/$', create_book), (r'book/list/$', list_book ), (r'book/edit/(?P<id>[^/]+)/$', edit_book), (r'book/view/(?P<id>[^/]+)/$', view_book), )
D)都添加了隐射。
视图都定义在了bookms/bookapp/views.py这里不再多说。