Как исправить это исключение NoReverseMatch в маршрутизаторах остальных структур Django? - PullRequest
0 голосов
/ 31 января 2019

Я работаю над этим проектом Django для обучения и не могу разрешить URL с помощью reverse ().

Я пытался понять эту концепцию из онлайн-документации и не смогчтобы преуспеть с этим.

Я использую ModelViewSet в моем views.py

В моем tests.py

POSTS_URL = reverse('posts:posts-list')

И это мой urls.pyсообщений (то есть, приложение)

app_name = 'posts'


router = DefaultRouter()
router.register('', PostsViewSet)


urlpatterns = [
path('', include(router.urls))
]

Это мой urls.py в корне

urlpatterns = [
path('admin/', admin.site.urls),
path('api/posts/', include('posts.urls')),
path('docs/', include_docs_urls(title='My API title')),
]

И это ошибка, которую я получаю

django.urls.exceptions.NoReverseMatch: Reverse for 'posts-list' not found. 'posts-list' is not a valid view function or patternname.

А также может кто-то предложить хорошее место, чтобы правильно понять, как работают reverse () и роутеры ..

1 Ответ

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

В вашем urls.py app_name, кажется, не привыкли, и маршрутизатор использует имя модели (единственное) по умолчанию, поэтому reverse("post-list") должно работать.

Если вы хотите присвоить своим адресам пространство имен, вы должны сделать что-то вроде path('api/posts/', include('posts.urls', 'posts')), тогда reverse('posts:post-list') должно работать.

...