Django: использование динамических URL-адресов c API в API REST ENDPOINT - PullRequest
0 голосов
/ 20 января 2020

Я работаю над API в Django, и один из моих URL-адресов GET (Retrieve) должен иметь следующий формат:

Пример:

http://127.0.0.1: 8000 / API / клиент / бронирование / одобрить / 151236 /

http://127.0.0.1: 8000 / API / клиент / бронирование / отклонение / 151236 /

В методе получения мы передаем PK, который по этому URL-адресу равен 151236, сохраняя при этом раздел перед тем, как переключаться между утверждением или отклонением. Можно ли создать одну конечную точку API, которая динамически изменяется, как в приведенном выше требовании, без необходимости писать две отдельные конечные точки API для утверждения и отклонения?

1 Ответ

1 голос
/ 20 января 2020

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

urls.py

url(r'^settings/(?P<url>[.\w-]+)/$', settings_url_resolver, name='user_setting')

url_resolver

def settings_url_resolver(request, url=None):
    url_path = request.path
    if request.user.is_anonymous:
        return redirect(reverse('user:login'))

    if url_path == 'endpoint1':
        view_name = SomeView.as_view()
        return view_name(request)
    elif url_path == 'endpoint2':
        return view2
    elif url_path == 'endpoint3':
        return view3
    else:
        raise Http404

Я написал эту пару лет go. Вы можете улучшить читабельность.

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