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等界面。