Почему Django Rest Framework добавляет косую черту к моему URL-адресу при фильтрации?

#python #django #django-rest-framework

#python #django #django-rest-framework

Вопрос:

Я только начинаю работать с Django Rest Framework и создал свои первые конечные точки. Теперь я пытаюсь добавить фильтрацию к своим URL-адресам, но есть две вещи, которые я пока не понимаю:

  1. Я создал следующий маршрут: router.register(r'endpoint', views.myView, basename='myView') . Когда я пытаюсь выполнить фильтрацию в своем браузере, как показано ниже http://127.0.0.1:8000/api/endpoint?amp;user=TEST , я буду перенаправлен на http://127.0.0.1:8000/api/endpoint/?amp;user=TEST . Почему перед символом стоит косая ? черта?

  2. В чем разница между использованием router.register и стандартным представлением на моем urlpatterns , как я бы сделал в Django?

Комментарии:

1. Есть параметр Django, который определяет, добавляет ли он косую черту к URL-адресам или нет: docs.djangoproject.com/en/3.1/ref/settings/#append-slash

Ответ №1:

  1. Потому что значение по умолчанию APPEND_SLASH равно True и, следовательно, перенаправление.

  2. Маршрутизаторы DRF будут генерировать соответствующие шаблоны URL-адресов в зависимости от того, какой тип маршрутизатора (SimpleRouter или DefaultRouter ) вы используете. Настоятельно рекомендую использовать вместе с наборами представлений DRF

Комментарии:

1. Большое спасибо за ваш ответ, он очень понятен. Что произойдет, если я установлю для APPEND_SLASH значение False? Это плохая практика?

2. Я хотел бы установить APPEND_SLASH=True (настройку по умолчанию), и я бы не стал определять какие-либо конечные точки без завершающей косой черты