在django1.4中,创建应用程序的位置更好

时间:2012-08-28 12:54:22

标签: python django

  

可能重复:
  Where should i create django apps in django 1.4?

在Django版本1.4中,结构发生了变化,manage.py走到了顶层。 使用django webiste中的教程,项目的名称是mysite,结构如下:

mysite/
manage.py
mysite/
    __init__.py
    settings.py
    urls.py
    wsgi.py

我想创建一个应用程序。在教程中,它将应用程序放在manage.py旁边,因此应用程序也位于顶层,就像这样:

mysite/
manage.py
mysite/
    __init__.py
    settings.py
    urls.py
    wsgi.py
polls/
    __init__.py
    models.py
    tests.py
    views.py

这样:

  1. 如果我在secend级别创建应用程序(在settings.py旁边)会有什么不同?

  2. 如果我在顶层创建应用,并且有一些静态文件,mysitepolls都应该使用,那么放置{{1}的位置目录?

2 个答案:

答案 0 :(得分:2)

Django改变了项目布局,以结束myproject.myapp.something进口的可怕时代。如果您的代码库周围分散了这些类型的导入,则无法移动任何内容或在其他项目中重复使用该应用程序。新的布局(与项目处于同一级别的应用程序)使得导入应用程序相对而非项目相对,大大简化了事情。

您的代码的根目录中唯一应该包含的是您的应用程序目录,项目目录和manage.py。项目范围内的任何内容(设置,模板,静态文件等都应该放在项目目录中。

尽管如此,STATIC_ROOT应指向myproject/static,但您不应手动创建该目录,也不应手动将任何内容放入其中。绑定到特定应用程序的静态文件应该放在该应用程序的static目录中。任何项目范围的静态文件都应该位于完全不同的目录中(与STATIC_ROOTMEDIA_ROOT不同)。然后将该目录添加到STATICFILES_DIRS,以便Django将其包含在开发中以及运行collectstatic管理命令时。

答案 1 :(得分:1)

您可以使用模板启动项目,如下所示:

https://github.com/goinnn/django-base-template

在这些模板中,已经定义了应用程序的位置