Django - Как функция просмотра может увидеть разницу между конечными точками, которые были достигнуты, без какого-либо значения, указанного в url?

Я довольно новичок в Django и вот мой случай.

Если у меня есть 3 конечные точки, которые я не могу изменить, и мне нужно указать их на одну и ту же функцию View, например :

urls.py

urlpatterns = [
...
    url(r'^a/', views.functionz.as_view(), name='a'),
    url(r'^b/', views.functionz.as_view(), name='b'),
    url(r'^c/', views.functionz.as_view(), name='c'),
...
]

Если мне запрещено менять конечные точки a/, b/ и c/ на что-то другое, принимающее параметры типа xyz/a или xyz/b, то как моя функция представления functionz сможет определить разницу между ними при вызове?

Могу ли я сделать что-то вроде этого псевдокода?

views.py

Class XYZ(API View):
    def post(self, request, format=None):
        if request.endpoint == '/a/':
        # do things if and only if the client hits /a/

Я не знаю, является ли хорошей идеей отображение различных шаблонов url на одно представление, но если вы хотите сделать эту логику в post, вы, вероятно, можете использовать get_full_path для получения текущего пути и разбора последнего элемента.

Class XYZ(API View):
    def post(self, request, format=None):
        current_path = request.get_full_path().rsplit("/", 1)
        if current_path == 'a':
           # Do something
        if current_path == 'b':
           # Do something
       
Вернуться на верх