Выполнение представления Django и перенаправление на другое представление как request.POST
Когда я обращаюсь к своей веб-странице, скажем, example.com, этот url ассоциируется с моим index
view.
def index(request, pid):
context = {}
context['nbar'] = 'index'
if request.method == 'POST':
User = get_user_model()
users = User.objects.all()
context['users'] = users
context['project_values'] = Project.objects.get(id=pid)
return render(request, 'index.html', context)
Внутри моего шаблона (index.html) есть кнопка, которая просто изменяет состояние определенного проекта Active <-> Inactive
Если пользователь нажимает на кнопку, я хочу, чтобы представление activate_project
или deactivate_project
выполнялось в фоновом режиме и по завершении выполнения просто перезагружало index.html как post.REQUEST
.
Что я пробовал:
Activate - Deactivate views
:
def activate_project(request, pk):
if request.method == 'POST':
project_to_activate = ITT.objects.get(pk=pk)
if project_to_activate.status == "Inactive":
project_to_activate.status = "Active"
project_to_activate.save()
return redirect('/index/'+str(project_to_activate.id)+'/')
def deactivate_project(request, pk):
if request.method == 'POST':
project_to_deactivate = ITT.objects.get(pk=pk)
if project_to_deactivate.status == "Active":
project_to_deactivate.status = "Inactive"
project_to_deactivate.save()
return redirect('/index/'+str(project_to_deactivate.id)+'/')
Проблема возникает здесь: return redirect('/index/'+str(project_to_deactivate.id)+'/')
Если я использую перенаправление, то оно рассматривается как GET
вместо POST
.
<WSGIRequest: GET '/index/5/'>
Короче говоря, мне нужно, чтобы index
знал, что я иду из deactivate_project
или activate_project
, как я могу сделать представление index
достаточно умным, чтобы знать это?