Django 2.0.7, как работает URL app_name - PullRequest
0 голосов
/ 11 октября 2018

Я работаю над проектом, созданным на python 3.4.3 и django 2.0.7, и застрял в логике файлов URL-адресов.Я до сих пор не понял эту ошибку: "ImportError: нет модуля с именем 'fields'.

Вот что у меня есть:

urls.py

from django.urls import include, path
from django.contrib import admin
from bridge.core import views as core_views

urlpatterns = [
    path('', core_views.home),
    path('backoffice/fields/', include('fields.urls', namespace='backoffice')),
    path('admin/', admin.site.urls),
]

fields / urls.py

from django.urls import path
from . import views

app_name = 'fields'

urlpatterns = [
    path('', views.list_fields, name='list_fields'),
]

Чем должен заполняться «app_name»? Как работает «app_name»?

Согласнотам файлы, когда я отправляю "/ backoffice / fields /" в браузере, django должен вызывать "views.list_fields", не так ли?

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

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

1 Ответ

0 голосов
/ 11 октября 2018

app_name используется для ссылки на ваш urls еще где.Вы также увидите ссылку как namespacing.Если бы у вас было два разных приложения с одинаковым url name, оно не всегда выберет правильное.Таким образом, вы присваиваете им пространство имен и называете их так:

{% url 'employee:name' %}
{% url 'customer:name' %}

Вы можете использовать имена не только в тегах шаблонов, например reverse('employee:name') и т. П.

Проблема, с которой вы столкнулисьявляется то, что он не знает, где найти ваш файл urls.Если у вас установлено приложение bridge.fields, попробуйте использовать include(bridge.fields.urls).

Чтобы полностью найти вашу проблему, мне нужно увидеть структуру папок project, где находится ваш основной файл urls и где находится ваш файл.fields.urls есть.Помните, что fields.urls действительно означает файл с именем urls.py, который находится в папке с именем fields.

...