使用django 1.4并且看到当你使用startproject
时,它现在在你的项目中创建一个具有相同名称的文件夹。
-myproject/
manage.py
myproject/
settings.py
urls.py
以前我的网址可以输入
ROOT_URLCONF = 'urls'
但那不再适用。我现在应该用项目名称作为前缀吗?即。
ROOT_URLCONF = 'myproject.urls'
-
在我的urls.py
我导入设置中,但现在我必须在其前面添加from myproject import settings
。
我认为使用项目名称为变量加前缀是违反django标准的,因为它破坏了可重用性?
答案 0 :(得分:54)
我只想补充一点,它会强制您在使用主myproject.urls
时使用前缀,但它不会强迫您使用任何一种方式来处理您的应用。您可以选择将应用程序存储在顶级文件夹中:
myproject
|-- manage.py
|-- myproject
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- polls
|-- __init__.py
|-- models.py
|-- tests.py
`-- views.py
使用python manage.py startapp polls
时,这是默认设置
在这种情况下,您可以使用from polls.models import Whatever
或者,您可以:
mkdir myproject/polls
python manage.py startapp polls myproject/polls
你会得到这个:
myproject
|-- manage.py
`-- myproject
|-- __init__.py
|-- polls
| |-- __init__.py
| |-- models.py
| |-- tests.py
| `-- views.py
|-- settings.py
|-- urls.py
`-- wsgi.py
在这种情况下,您必须from myproject.polls.models import Whatever
...
因此,对于您认为可以在其他项目中重复使用的应用程序,前者更好,而后者对于与项目的其他部分紧密耦合的应用程序更好。
答案 1 :(得分:16)
是,使用您的项目名称加上ROOT_URLCONF
前缀:
ROOT_URLCONF = 'myproject.urls'
您无论如何都不应直接导入设置(请参阅Using settings in Python code)。相反,请使用以下内容,它适用于旧项目布局和新项目布局。
from django.conf import settings