удаление косой черты в django rest framework во всех URL: добавлено с помощью роутера, вручную или с помощью include - PullRequest
0 голосов
/ 28 августа 2018

Я создаю API с использованием каркасов Django REST и хотел бы избавиться от всех косых черт во всех URL. Я добавил APPEND_SLASH = False в settings.py

Вот различные случаи, с которыми я столкнулся:

  1. Явные URL: Нет проблем, так как мы можем полностью контролировать регулярное выражение:

urlpatterns = [...,url(r'^api/objects/(?P<pk>[0-9]+)/property$', SomeView.as_view(), name='object-property'),...]

Что позволяет отправлять запросы на /api/objects/1/property

  1. Использование маршрутизатора:

router = routers.DefaultRouter(trailing_slash=False)

router.register(r'some-endpoint',SomeViewSet,base_name='some_endpoint')

url(r'^api/', include(router.urls)),

Что позволяет отправлять запросы на /api/some-endpoint

  1. Проблема: Использование сторонних пакетов

Например, я пытаюсь использовать django-rest-auth. Я установил его с помощью pip и, следуя документам, добавил * нужные URL-адреса (включая регистрацию) в urlpatterns следующим образом:

url(r'^api/', include('rest_auth.urls')), url(r'^api/registration/account-confirm-email/(?P<key>[-:\w]+)/$', ConfirmEmailView.as_view(), name='account_confirm_email'), url(r'^api/registration/', include('rest_auth.registration.urls')),

это сделает, например, конечную точку /api/login/ активной, но с косой чертой, которую я не хочу для согласованности.

Затем я попытался удалить url(r'^api/', include('rest_auth.urls')) и, сосредоточившись на конечной точке login, импортировал ее вид:

from rest_auth.views import LoginView

и добавил URL к urlpatterns в надежде использовать его без косой черты:

url(r'^api/login$', LoginView.as_view(), name='rest_login'),

или

url(r'^api/login', LoginView.as_view(), name='rest_login'),

Ничего из этого не сработало.

Однако, если я добавлю косую черту: url(r'^api/login/$', LoginView.as_view(), name='rest_login')

конечная точка будет работать.

  1. Незначительная проблема: Для администратора сайта

У меня похожая проблема с сайтом администратора, который добавляется:

url(r'^admin/', admin.site.urls),

все конечные точки имеют косые черты, включая /admin/

в то время как: url(r'^api/docs', include_docs_urls(title='API Doc',public=False))

добавит документы без косой черты в любом месте.

Так как я могу удалить косые черты для: - django-rest-auth или какой-либо другой сторонний пакет? - для администратора сайта?

Большое спасибо за вашу помощь.

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