Как получить URL просмотра с помощью django.core.urlresolvers.reverse - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть шаблон URL в urls.py в проекте Django, подобном этому.

urlpatterns = [
    url(r'^web/', include('project.web.weburls')),
]

, и в моем файле weburls.py я имею это:

urlpatterns = [
    url(r'^$', webview.home)
]

и вФайл webview, у меня есть это:

def home(request):
    pass

в моем тестовом файле, я написал тестовый пример, как показано ниже,

url = reverse("project.web.weburls.webview.home")

, но он дал мне ошибку.NoReverseMatch: не найдено обратное значение для project.web.weburls.webview.home.

Почему я получаю это?какая ошибка у меня при использовании этого метода?

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

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Вы переворачиваете пространства имен URL вашего проекта Django, а не код Python.Для этого вам необходимо позвонить reverse('home') или reverse(home).Сравните с документами :

reverse (viewname, urlconf = None, args = None, kwargs = None, current_app = None). Viewname может быть именем шаблона URL или вызываемым представлением.объект.Например, учитывая следующий URL:

0 голосов
/ 04 февраля 2019

сначала вам нужно дать имя вашему URL-маршруту.

path('archive/', views.archive, name='news-archive')

из django.urls import reverse

, затем вы можете использовать функцию reverse () для получения обратного URL.см. документацию по django по ссылке ниже:

https://docs.djangoproject.com/en/2.1/ref/urlresolvers/

и посмотрите на тестирование django с использованием реверса в юнит-тестировании.

https://django -testing-docs.readthedocs.io/en/latest/views.html#getting-into-context

...