Как использовать Django без строкового литерала? - PullRequest
1 голос
/ 15 апреля 2020

Я только начал с django.

После этого урока я получил следующее urls.py:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

Это ссылки на polls.urls.py, который имеет собственный маршрутизатор.

Мне не нравится строковый литерал 'polls.urls', который, ну ... строковый литерал.

Я бы Я хотел бы как-то ссылаться на файл напрямую, используя некоторые возможности python, и, по крайней мере, моя IDE защищает меня.

Что произойдет, если я захочу переместить этот файл polls.urls.py или переименовать его, или переименовать опросы? Должен ли я доверять своей среде IDE для получения ссылки из строкового литерала?

Это почти то же самое, что делать это чудовище , и мне очень трудно принять это за лучшую практику.

Мне это кажется странным.


Есть ли способ использовать что-то менее подверженное ошибкам, чем строковые литералы в маршрутизаторах django?

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Я не вижу проблем с использованием строковых литералов, так как URLconf загружается до запуска сервера (runserver)

Если возникнет проблема, вы получите ошибку ModuleNotFound

Из источника include ():

if isinstance(urlconf_module, six.string_types):
    urlconf_module = import_module(urlconf_module)

Вы можете увидеть хорошее использование import_module через Django framework и строковые литералы.

Your IDE будет знать, если есть неразрешенная ссылка (Pycharm делает)

0 голосов
/ 15 апреля 2020

Итак, из того, что я понимаю, или из того, что я знаю, есть два способа отображения URL с использованием path' or url`

для метода пути, который вы обязательно сделаете так:

from django.urls import path, include

но вы также должны импортировать ваши views.py

Для второго метода вы должны:

from django.conf.urls import url

, затем ваш должны импортировать ваши представления в виде: from .views import home_page home_page, являющийся функцией или классом в вашем views.py

Пример отображения url(r'^home/$', home_page),

, поэтому нет необходимости фактически создавать URL-адреса. py, если вы используете этот метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...