Рекомендуется ли определенное имя_приложения в urls.py для Django 2? - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь выяснить, как лучше всего писать urls.py файлы в моем приложении Django. Я обновляю старый проект до Django 2, и я прочитал в документации по обновлению, что файлы urls.py должны быть должным образом распределены по пространству имен. Небольшое прибегание к поиску подсказывает мне всегда определять app_name в моем urls.py, поэтому вам не нужно вручную добавлять имя_приложения в каждую конечную точку URL. Вместо этого вы можете получить к нему доступ как ("app_name: url_name").

В моем проекте у меня есть:

avatar/urls.py
services/urls.py

Так что в этом случае я не уверен, как чтобы назвать их, но сейчас я пошел с app_name = "avatar" в avatar/urls.py и app_name = "avatar-services" в services/urls.py.

Нужны ли им обоим app_name для правильного пространства имен? Лучше ли всегда иметь определенный app_name на urls.py? Я все еще не уверен, требуется ли это или даже рекомендуется. Если я правильно понял, это просто для более легкого / логического доступа к URL, не обязательно, но рекомендуется в том смысле, что за ним легче следовать.

РЕДАКТИРОВАТЬ: Обновлено, чтобы сделать пример более понятным.

Ответы [ 3 ]

0 голосов
/ 09 марта 2020

Наличие нескольких urls.py файлов не обязательно, но рекомендуется для каждого приложения. Если возможно логически разделить ваше основное приложение на более мелкие приложения, то вам следует это сделать. Каждое приложение будет иметь свою собственную модель, urls.py, views et c. Тесты могут быть частью каждого приложения.

0 голосов
/ 11 марта 2020

Исходя из того, что я понял, более общий ответ таков:

  1. Если возможно логически разбить ваше приложение на более мелкие приложения, они должны иметь свои urls.py для своих представлений.
  2. Каждое приложение должно иметь app_name, определенный в этом urls.py.
  3. Иногда разбивка может не иметь смысла или может не предоставлять свои собственные представления, такие как tests приложение.

В случае с моим вопросом, да, у каждого из avatar и services должны быть свои urls.py с app_name, скажем app_name = "avatar" и app_name = "services" соответственно. Затем они доступны через ("avatar:<url_name>") и ("services:<url_name>"). Однако в некоторых случаях вы можете этого не делать. Например, в моем главном приложении также есть каталог tests, но это всего лишь модульные и интеграционные тесты, и он не предоставляет свои views.py или urls.py. В этом случае нет необходимости форсировать это.

Это мое текущее понимание, поэтому не стесняйтесь исправлять меня, если я ошибаюсь!

0 голосов
/ 09 марта 2020

Для меня лучший способ - преобразовать urlpatterns в кортеж, передав имя приложения в качестве второго элемента

urlpatterns = ([
    path(..., name='some name'),
    path(...., name='some name'),
    .....
], 'appname')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...