Django标准化项目dj-scaffold

由于Django没有象rails一样指定项目的目录结构规范,很多人都对django项目的目录结构要如何组织而感到困惑。为此我又新创建了一个开源项目dj-scaffold(django的脚手架)。这个项目用于自动生成一个标注化的django项目和app。

项目地址:https://github.com/vicalloy/dj-scaffold

安装

已经发布到了pypi,所以你可以用pip或easy_install 来进行安装。

使用

dj-scaffold主要提供了两个命令,dj-scaffold.pylbstartapp

dj-scaffold.py

该脚本用于取代django的startproject命令。使用方式如下:

在该命令执行后,将创建项目projectname。在项目的scripts目录中提供了脚本create_env.pyenv.rc

  • create_env.py 执行该脚本将自动初始化python虚拟环境。新生成的python虚拟环境在env目录。
  • env.rc 该脚本用户启动python虚拟环境(source env.rc)。该脚本同时为python manage.py设置了快捷方式$mg。你可以在任何目录调用$mg来执行django命令。比如你用$mg runserver来启动测试服务器。

项目对应的目录结构如下:

lbstartapp

lbstartapp作为django的扩展命令提供。将dj_scaffold加到INSTALLED_APPS后即可使用该命令。该命令将生成一个标准的app,相比django自带的startapp,lbstartapp将那些不太常用的app默认目录也都给生成了出来。对应目录结构如下:

NOTE

  • 项目的大多代码来自:https://github.com/lincolnloop/django-startproject
  • 类似项目:https://github.com/mozilla/playdoh 个人觉得这个项目还可以。不过我个人觉得自己写的更符合自己的习惯。
  • “摒弃魔法”是Django的哲学之一。为此Django没有为用户提供太多的默认操作,它希望一切对用户都是显示可见的。这本没太大的问题,但在我看来“no magic”并不代表连规范都不要。Django实在是太缺乏一些必要的规范。

8 Comments

  • edward32tnt
    2011年08月5号 - 8:59 上午 | Permalink

    有些人会吧 models 做成目录形式
    有些人喜欢把 views 做成目录形式

    各种怪想法

  • 2011年08月5号 - 9:29 上午 | Permalink

    恩,django-cms就是这样做的。
    我有时候也会这么做。
    刚开始按照django的标准目录,代码多了后,拆分成多个views、models、urls。
    同一个目录文件太多了,然后再将models、views啥的做成目录。
    不过在我看来至少在app创建的最初是没必要把目录搞这么复杂的。

  • 2011年08月5号 - 2:21 下午 | Permalink

    学习学习

  • 2011年08月6号 - 7:27 下午 | Permalink

    推了:http://simple-is-better.com/news/636

  • 2011年09月7号 - 10:17 上午 | Permalink

    报告一个bug
    在路径存在空格的情况下
    执行create_env.py脚本会报错

  • 2011年09月9号 - 9:44 上午 | Permalink

    应当在脚本中给目录加个双引号就可以了。
    我在下次调整的时候修正下。

    一般还是不要在目录中加空格吧。

  • 2013年11月13号 - 4:19 下午 | Permalink

    为什么最新版的create_env.py 取消了,是合在哪个命令里了,还有是不是不支持windows环境?

  • 2013年11月14号 - 1:04 下午 | Permalink

    换成 env.rc 了。没有提供windows下的支持。

  • Comments are closed.