2017-01-05 4 views
3

Я хотел бы понять, есть ли правильный и приемлемый способ обработки импорта в Django?Каков правильный способ импорта Django?

Я использую следующие шаблоны>

# import views from Django app called xxx to urls.py in the same app 
from . import views 

Что я вижу, был использован во многих учебников и блогов>

# import views from Django app called xxx to urls.py in the same app 
from xxx import views 

Точно так же я использую>

# import YYY and XXX from xxx.models to xxx.serializers.py 
from .models import YYY, XXX 

Что я вижу, был использован например, в учебнике Django-Rest-Framework>

# import YYY and XXX from xxx.models to xxx.serializers.py 
from xxx.models import XXX, YYY 

Выполнение импорта способом, показанным в учебниках, не работает в моих приложениях Django. Я делаю что-то неправильно? Я выбрал путь из документации Django. Я использую Django 1.10 с Python3.5

+0

Просьба поделиться с вами структурой древовидной структуры проекта. Просто установите модуль дерева и запустите команду «tree» из каталога проекта и добавьте вывод в свой вопрос. –

ответ

1

Скажем, у вас есть проект Django, который выглядит следующим образом: 2 приложения под названием app_1 и app_2

mysite/ 
    manage.py 
    app_1/ 
     __init__.py 
     models.py 
     views.py 
    app_2/ 
     __init__.py 
     models.py 
     views.py 
    mysite/ 
     __init__.py 
     settings.py 
     urls.py 
     wsgi.py 

Теперь для запуска этого приложения вы будете использовать эту команду.

mysite> python manage.py runserver

Здесь вы запускаете команду из mysite родительского папки/каталога.

Теперь в python app_1 просмотров код говорит, что вы импортируете модель app_2 (которую вам не нужно делать, если ваш код хорошо структурирован). Но для этого импорта вам нужно будет сделать полное пространство имен.

пример:

from app_2.models import XXX

С другой стороны, если вы хотите импортировать модель из одного приложения app_1 вы могли бы использовать

from .models import YYY

но если вы производите с помощью команды mysite> python manage.py runserver вы также сможете импортировать тот же модуль с полным пулом пространства имен.

from app_1.models import YYY

Примечание: Хороший способ кода всегда явно. Следовательно, вы заметите, что это чаще всего предписывается.

# import views from Django app called xxx to urls.py in the same app 
from xxx import views 

# import YYY and XXX from xxx.models to xxx.serializers.py 
from xxx.models import XXX, YYY 
Смежные вопросы