2011-03-23 60 views
25

Django有没有足够的scaffoldingDjango有没有足够的脚手架? (A Ruby on Rails)

它可能在新发布的1.3版本中,但我还没有找到它。

+2

你是什么意思?对于管理员你有管理员应用程序对于处理表单模型,你有ModelForm,对于通用控制器,你有通用的视图:) – 2011-03-23 14:09:24

+1

当你说“脚手架”,你的意思是在这个意义上? http://stackoverflow.com/questions/5327933/define-scaffolding-with-respect-to-dynamic-data-and-asp-net-mvc – 2011-03-23 14:12:34

+0

这一切都是关于'rails'脚手架我想知道是否有像'管理.py scaffold SOME_MODEL',如果它的行为像Rails一样。:)它可能对我有点意义:) – sultan 2011-03-23 14:15:44

回答

17

我看过,还没有找到Django的东西,很像Rails Generate命令。 Django有一些不同的哲学。它给你提供了一些工具,让你轻松做事,但实际上并没有为你做(管理界面除外)。在事物的宏伟计划中,我认为这是好的。当我使用rails的脚手架时,我不能经常保留大部分自动生成的东西。当我这样做时,django管理界面可能也会工作,并给我更多的功能。

相反,我建议通过介绍通用视图的Django tutorial step 4,然后介绍窗体的chapter 7 of the Django book来阅读。你必须耐心等待第7章,因为作者认为你想在简单的方法教你之前知道艰难的细节。 (尝试在页面中搜索词组django.forms)

最后,您需要在rails和django之间完成的工作量与Django相当,而且可能会稍微减少一些。但是,您没有一个命令会自动为您提供样板代码以用作基础。

+1

+1在Django中,您可以间接节省时间 – slezica 2011-04-17 21:13:49

7

因此,Django 1.3仍然缺乏“脚手架”功能。不好。 支架的最佳之处在于,它允许开发人员立即开始项目,而不必回顾所有“模型”,“网址”和“视图”语法。

看看下面这个例子,让我们开始新的项目和应用:

$django-admin startproject mysite 
$python manage.py startapp blog 

,现在我们需要手动到“启动”一切,从几乎是空文件。 但它会很方便做这样(如在轨)

$python manage.py scaffold app:blog model:Post title:string content:text 

这应该给我们: models.py

class Post(models.Model): 
    title = models.CharField 
    content = models.TextField 

views.py

def index(request): 
    posts = Post.objects.all().order_by('-id') 
    return render_to_response('blog/index.html', {'posts': posts}) 

并以某种方式更新urls.py,...或不,这是更复杂但不太需要的。

这在未来的Django版本中应该不难实现。如果我在Django有足够的知识和经验,我会这样做。不幸的是我没有做很多Django项目,这就是为什么我需要这个功能。

+0

实际上,我们需要的是创建模型,模型表单,列表模板,查看/编辑模板以及生成urls – sultan 2011-08-04 09:06:00

+0

我同意。尽管我没有使用原来的脚手架,但我仍然希望快速启动。 Django很快就把我拒之门外。我喜欢Python,但是因为Django的缺点而不得不剪贴。 – nathanengineer 2016-05-19 23:20:28

0

您可以检查django-addview。它意味着需要使用漂亮的ncurses GUI自动添加新视图,这些都是无聊的,平凡的步骤。它为你做什么:

  • 扩展CBV或写功能
  • 填写CBV的参数
  • 创建模板,在给定的位置
  • 编辑的urls.py你
  • 关心所有进口

完全披露:我写的。

1

我刚刚使用了Django Common提供的scaffold helper/management命令,它似乎设置了一大堆代码样板。选项是有限的,但足够体面。

我浏览了代码,大部分看起来都很好。我需要做的清理,一旦被脚手架“搭建”,虽然有一点点:为每个创建模型加入

  • 独立import线。合并它们。
  • 模板仍旧带有旧的(1.4)url模板标签规范。修改它们以反映新的(1.5)规范,即将每个模型中创建的每个html文件中的第二个参数括在单引号中。
  • 更新了urls.py主模块,include模块用于app.urls模块。
  • 我使用了一个非标准的settings.py设置 - 三个单独的文件common.pydev.pyprod.py我的设置。必须手动将应用程序添加到已安装的应用程序。因人而异。

话虽这么说,看着我没有写的样板代码量(如果我想别的编辑该列表),我会说这确实很好工作!

截至目前,回购似乎维护得很好 - 最后一次提交是在撰写此回复时的18天前。我很可能会提出一个拉取请求/提出一个关于我在回购时遇到的问题的问题。