Django 1.4新项目文件夹结构强制项目前缀?

dar*_*ren 23 django

使用django 1.4并且已经看到,当您使用startproject它时,现在在项目中创建一个具有相同名称的文件夹.

-myproject/
           manage.py
           myproject/
                    settings.py
                    urls.py
Run Code Online (Sandbox Code Playgroud)

记录在案的变化

以前我的网址可以输入

ROOT_URLCONF = 'urls'
Run Code Online (Sandbox Code Playgroud)

但那不再有效.我现在应该用项目名称作为前缀吗?即

ROOT_URLCONF = 'myproject.urls'
Run Code Online (Sandbox Code Playgroud)

- 在我的urls.py导入设置中,但现在我必须用它作为前缀from myproject import settings.

我认为带有项目名称的变量前缀是针对django标准的,因为它打破了可重用性?

hwj*_*wjp 54

我只想补充一点,它会强制你在使用前缀时使用前缀myproject.urls,但它并不会强迫你使用任何一种方式来应用你的应用程序.您可以选择将应用程序存储在顶级文件夹中:

myproject
|-- manage.py
|-- myproject
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
`-- polls
    |-- __init__.py
    |-- models.py
    |-- tests.py
    `-- views.py
Run Code Online (Sandbox Code Playgroud)

这是您使用时的默认设置.python manage.py startapp polls 在这种情况下,您可以使用from polls.models import Whatever

或者,您可以:

mkdir myproject/polls
python manage.py startapp polls myproject/polls
Run Code Online (Sandbox Code Playgroud)

你会得到这个:

myproject
|-- manage.py
`-- myproject
    |-- __init__.py
    |-- polls
    |   |-- __init__.py
    |   |-- models.py
    |   |-- tests.py
    |   `-- views.py
    |-- settings.py
    |-- urls.py
    `-- wsgi.py
Run Code Online (Sandbox Code Playgroud)

在这种情况下,你将不得不from myproject.polls.models import Whatever......

因此前者对于您认为可以在其他项目中重复使用的应用程序更好,而后者对于与项目的其他部分紧密耦合的应用程序更好.


Ala*_*air 16

是的,前缀ROOT_URLCONF为您的项目名称:

ROOT_URLCONF = 'myproject.urls'
Run Code Online (Sandbox Code Playgroud)

您不应该直接导入设置(请参阅在Python代码中使用设置).而是使用以下内容,它适用于旧项目布局和新项目布局.

from django.conf import settings
Run Code Online (Sandbox Code Playgroud)