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