Django有足够的脚手架吗? (Ruby on Rails)

时间:2011-03-23 14:06:35

标签: python django scaffolding

Django有足够的scaffolding吗?

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

6 个答案:

答案 0 :(得分:18)

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

相反,我建议阅读引入通用视图的Django tutorial step 4,然后介绍形式的chapter 7 of the Django book。你必须对第7章保持耐心,因为作者认为你想要在他们教你简单方法之前就知道困难的细节。 (尝试在页面中搜索短语django.forms)

最后,你需要在rails和django之间做的工作量相等,而Django可能会略微减少。但是,您没有一个命令可以自动为您提供样板代码作为基础。

答案 1 :(得分:8)

因此Django 1.3仍缺乏“脚手架”功能。不好。 脚手架中最好的是它允许开发人员立即从项目开始,而不会回忆所有“模型”,“网址”和“视图”语法。

看看这个例子,让我们开始新项目和app:

$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项目,这就是我需要这个功能的原因。

答案 2 :(得分:7)

这个更靠近类似铁轨的脚手架:https://github.com/modocache/django-generate-scaffold

答案 3 :(得分:1)

我发现了这个:https://github.com/madhusudancs/django-groundwork

看起来它正是您正在寻找的。希望它有所帮助。

答案 4 :(得分:1)

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

我浏览了代码,大部分内容都很好看。一旦脚手架竖立起来,我需要做一些清理工作,但是:

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

(如果我想到其他任何事情,将编辑此列表)

话虽如此,看看我不必编写的样板代码数量,我说它做得非常好!

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

答案 5 :(得分:0)

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

  • 扩展CBV或写入功能
  • 填写CBV参数
  • 在指定位置创建模板
  • 为您编辑urls.py
  • 关心所有进口

完全披露:我写了。