2013-02-27 5 views
3

Впервые я пытаюсь Django, и я стараюсь следовать the tutorial, предоставленным командой django.manage.py - не в папке проекта?

После того как я создал новый проект, я получаю следующую структуру папок/файлов, так же, как учебник говорит, что я должен:

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

Когда я создаю приложение, я бегу:

python manage.py startapp polls 

... который создает приложение опрос в той же папке, что и файл manage.py - что дает мне:

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

Это означает, что созданное мной приложение создается вне моей папки проекта, что, конечно же, не должно быть. Я попытался переместить manage.py внутри папки проекта. Но когда я делаю это и запуск:

python manage.py syncdb 

... Я получаю следующее сообщение об ошибке:

raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" %  (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'testproject.settings' (Is it on sys.path?): No  module named testproject.settings 

Я предполагаю, что я мог бы переместить приложение вручную в папку проекта, но это то, что я не должен не нужно.

Итак, что-то не так в учебнике (что мне очень трудно поверить), или я что-то упустил здесь (скорее).

Заранее спасибо.

+0

Является ли структура сайта вы отправили фактическую структуру или пример? –

ответ

6

Это новая правильная компоновка. «mysite/mysite» - это приложение, а «mysite/polls» - это приложение. Родительская папка «mysite» - это папка вашего проекта.

+0

Правильно это или нет, Django не находит свой файл настроек. Это указывает на то, что что-то не так. –

+0

он сказал, что не может найти его * после * он переехал manage.py в mysite/mysite. –

+0

Хорошо, теперь я понимаю. На какое-то время он немного смутился. Благодаря! – holyredbeard

3

@holyredbeard, который является правильным макетом, вы читаете старую документацию?

Полезные ссылки: http://www.tdd-django-tutorial.com/blog/articles/2012/tutorials-updated-django-14-and-its-weird-new-fold/

Не перемещайте manage.py он должен сидеть вне приложения и папки проекта.

так 1.4 общий пример компоновки ...

project_root/ 
    project_name/ 
     media/ 
     static/ 
     static_root/ (in production) 
     templates/some_app/foo.html (overriding some_app at project level) 
       /admin/some_app/some_model/change_list.html 
       (overriding admin changelist for some_app.models.some_model) 
     settings.py 
     settings_deployment.py 
     urls.py 
    some_app/ 
     templates/some_app/foo.html 
     urls.py 
     views.py 
     models.py 
    manage.py 
1

Это официальный макет, начиная с версии 1.4.

Обоснование объясняется также в примечаниях к выпуску: https://docs.djangoproject.com/en/dev/releases/1.4/#updated-default-project-layout-and-manage-py

Не двигайтесь manage.py. В общем, вы можете ожидать, что собственные скрипты Django всегда поступают правильно, вам никогда не нужно перемещать файлы, чтобы заставить их работать.

Смежные вопросы