Как создать иерархические URL-адреса в приложении Django? - PullRequest
0 голосов
/ 25 января 2019

У меня есть несколько приложений на основе проекта django и в некоторых приложениях схема URL усложняется из-за количества моделей.Поэтому я ищу способ сделать иерархическую структуру URL в приложении .

В файле URL моего проекта я делаю следующее.

from order import urls as order_urls

В приложении order у меня есть каталог urls.py и urls, который содержит отдельные шаблоны URL для каждой модели следующим образом.

enter image description here В URL-адресах приложения.py файл. Импортирую URL-адреса модели следующим образом.

from  urls import rental as rental_urls

urlpatterns = [
    url(r'^rental-request/', include(rental_urls)),
]

Это дает мне ошибку: ModuleNotFoundError: No module named 'urls' Если я поставлю __init__.py, это дает мне круговую ошибку импорта.

I 'Я не уверен, что это правильный путь / возможно для моего требования.Кто-нибудь может объяснить правильный способ достижения этого?

1 Ответ

0 голосов
/ 25 января 2019

Наличие папки с именем urls (с файлом __init__.py) и файла urls.py в той же папке, вероятно, вызовет проблемы при загрузке модуля order.urls из любой точки вашего проекта.Как Python узнает, какой файл должен быть загружен?

Рассмотрим следующую структуру:

├── main.py
├── urls
│   └── __init__.py
└── urls.py

И это содержимое для каждого файла:

# urls/__init__.py
urlpatterns = "I'm in folder"

# urls.py
urlpatterns = "I'm in file"

# main.py
import urls
print(urls.urlpatterns)

Когда вы запускаете main.py, результат:

% python main.py
I'm in folder

Возможные решения: Вы можете удалить urls.py и переместить его содержимое в urls/__init__.py, или переименовать папку urls, чтобы избежатьконфликтует и обновляет импорт соответственно (в urls.py)

...