Url django с рамкой отдыха django - PullRequest
       0

Url django с рамкой отдыха django

0 голосов
/ 24 сентября 2018

это мой файл url для моего приложения "backend".

router = routers.DefaultRouter()
router.register(r'gamelogs', views.GameLogViewSet)
router.register(r'referees', views.RefereeViewSet)
router.register(r'players', views.PlayerViewSet)
router.register(r'teams', views.TeamViewSet)


urlpatterns = [
    path(r'reports/<int:game_id>/)', views.get_pdf_report, name='get_pdf_report'),
    path(r'teams/<int:team_id>/)', views.get_team_formation, name='get_team_formation'),

    path(r'game-instance/<int:game_id>/)', views.get_match_instance, name='get_match_instance'),

    url(r'^api-auth/', include('rest_framework.urls')),
    url(r'^', include(router.urls))
]

Теперь, если я перехожу к 0.0.0.0:8000/backend/game-instance/1/, я получаю, что URL несуществовать.Что не так?

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

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

Таким образом, ваши конечные точки на данный момент выглядят так:

0.0.0.0:8000/game-instance/<id>
0.0.0.0:8000/reports/<id>
0.0.0.0:8000/teams/<id>

Если вы хотите иметь эти конечные точки с backend, вам нужно явно добавить их в urls.py, например так:

urlpatterns = [
    path(r'backend/reports/<int:game_id>/)', views.get_pdf_report, name='get_pdf_report'),
    path(r'backend/teams/<int:team_id>/)', views.get_team_formation, name='get_team_formation'),

    path(r'backend/game-instance/<int:game_id>/)', views.get_match_instance, name='get_match_instance'),

    url(r'^api-auth/', include('rest_framework.urls')),
    url(r'^', include(router.urls))
]

Или другой подход - создать еще один urls.pyдля вашего бэкенда в бэкэнд-приложении и включите его в urls.py:

вашего проекта

ваш бэкэнд / urls.py

urlpatterns = [
    path(r'reports/<int:game_id>/', views.get_pdf_report, name='get_pdf_report'),
    path(r'teams/<int:team_id>/', views.get_team_formation, name='get_team_formation'),

   path(r'game-instance/<int:game_id>/', views.get_match_instance, name='get_match_instance'),

] 

и включите в urls.py:

проекта
urlpatterns = [
    path(r'backend/', include('backend.urls'),
    url(r'^api-auth/', include('rest_framework.urls')),
    url(r'^', include(router.urls))
]

Оба эти решения создадут конечные точки, как вы хотели бы

0 голосов
/ 25 сентября 2018

У меня проблема.Печально известный как забытая точка с запятой.

urlpatterns = [
    path(r'reports/<int:game_id>/)', views.get_pdf_report, name='get_pdf_report'),
    path(r'teams/<int:team_id>/)', views.get_team_formation, name='get_team_formation'),

    path(r'game-instance/<int:game_id>/)', views.get_match_instance, name='get_match_instance'),

    url(r'^api-auth/', include('rest_framework.urls')),
    url(r'^', include(router.urls))
]

Видите ли вы забытые и необъяснимые скобки?Просто в конце шаблона URL?!

0 голосов
/ 24 сентября 2018

Почему вы используете 0.0.0.0:8000?

Я бы попробовал что-то вроде этого http://127.0.0.1:8000/api-auth/game-instance/1/ Или, может быть, это http://127.0.0.1:8000/game-instance/1/

У вас есть 2 файла urls.pyправо?Один из них указывает на другой.Файл urls.py внутри той же папки, где находится файл settings.py, должен указывать на файл urls.py внутри вашей внутренней папки.

 re_path('any_name_you_want/', include('backend.urls')),

Тогда внутри вашего backend / urls.py у вас должны быть URL-адреса структур, которые вы связали выше.Не уверен, помогло ли это XD.

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