rails有一個無用的”神奇“功能,叫做scaffold。能夠在model基礎上,自動生成CRUD的界面。
說它無用,是因為rails的開發者David說,scaffold”不是應用程序開發的目的。它只是在我們構建應用程序時提供支持。當你設計出產品的列表該如何工作時,你依賴於“支架”“生成器”產生創建,更新,和刪除的行為。然后在保留這個“動作”時你要替換由“生成器”生成的行為。有時候當你需要一個快速接口時,並且你並不在乎界面的丑陋,“支架”就足夠用了。不要指望scaffold能滿足你程序的所有需要"。
說它神奇,是因為在rails中你不清楚他是怎么實現的。只告訴你一句話:約定優先於配置。只要名字xxx,就會xxx。說得人雲里霧里,認為rails真是一個偉大的框架。
在Django的世界中沒有這種無用的東西。但是如果你一定要,可以很容易地創建這么一套東西。下面我們就在project中引入一個“插件”。前面說過,app可以在多個project之間很容易的復用,我們要引入的就是一個第三方的app,無需修改,只需要簡單配置即可使用。
這個app叫做django-groundwork 。它不實現具體的功能,而是擴展了manage.py 的命令,使得通過命令行可以生成一些代碼/文件。
下載django-groundwork的代碼:
$git clone https://github.com/madhusudancs/django-groundwork.git
$ls django-groundwork
AUTHORS LICENSE README.rst django-groundwork
將其中的django-groundwork文件夾復制到project文件夾,然后在settings.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', 'depot.depotapp', 'django-groundwork', )
即完成了安裝。(如果遇到了什么麻煩,也可以下載本文附帶的源代碼包)
安裝后,使用$python manage.py help可以看到,列出的可用命令中多了一個groundwork。其語法是:
$python manage.py groundwork appname ModelName1 ModelName2
接下來使用這個app為Product生成scaffold:
$python manage.py groundwork depotapp Product,就會生成所謂的scaffold。
此時運行開發服務器(python manage.py runserver),就可以訪問下面的地址:
http://localhost:8000/depotapp/product/list/ 訪問Product列表,並鏈接到create,edit,view等界面。
可以下載本次迭代的源代碼:http://download.csdn.net/detail/thinkinside/4035662