Django view для перенаправления на один и тот же url с разными параметрами?
У меня есть приложение django с представлениями (урлами), которые показывают разные списки для разных мест:
path('ItemList/<int:locationId>/', views.ItemList, name="ItemList"),
path('SomethingList/<int:locationId>/', views.SomethingList, name="SomethingList"),
и затем в шаблоне у меня есть меню, когда я могу переключаться между локациями, т.е. находясь в -- ItemList/2/ я могу переключиться на локацию с другим Id или находясь в SomethingList/4/ я могу переключиться на локацию с другим Id
Для переключения местоположения у меня есть метод (который, очевидно, неверен):
def setLocation (request, newLocationId):
return redirect(request.META['HTTP_REFERER'], locationId = newLocationId)
но как я могу сделать это, чтобы получить текущий url, например: ItemList/2/ и перенаправить его на ItemList/4/ (т.е. на другой id?)
В запросе есть атрибут resolver_match
, который вы можете использовать вместе с новым идентификатором местоположения, чтобы получить url для перенаправления:
def setLocation (request, newLocationId):
url_name = request.resolver_match.url_name # "ItemList" or "SomethingList" as per URL conf
return redirect(reverse(url_name, kwargs={"locationId": newLocationId}))