BOOKMS是一個公司內部的圖書管理系統。BOOKMS的后台管理主要使用Django的admin模塊。
本系列用多次迭代方法,逐步實現一個圖書管理系統BOOKMS。
本文主要介紹app的后台管理和用django-groundwork 生成前台CRUD。
一.將自己的models加入到admin的管理
上一回我們可以看到后台的界面了,但細心的你一定發現了里面沒有我們要的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這里不再多說。




