python - to redirect to URL which accepts POST requests only in django -


i working on project based on django framework requires apis built accept post requests except 1 or 2 can recieve requests. 1 of apis, /x/, invoked on submission of form method type post. view attached api /x/ modifies request , needs invoke api(say /y/) or view again accepts post requests only. code follows :

views.py

from django.template import requestcontext django.shortcuts import render, redirect django.contrib.auth import authenticate,login,logout django.http import httpresponseredirect, httpresponse django.contrib.auth.decorators import login_required rest_framework import status rest_framework.decorators import api_view rest_framework.response import response import logging  #print "__name__ : " + __name__ logger = logging.getlogger('django.request') logger_info = logging.getlogger('correct_info')  #to_be_commented @api_view(['post','get']) def load_filter(request):          context = requestcontext(request)         if request.method == 'post':                  print request.data                 filter_list = request.post.getlist('profile')                 print filter_list                  stdd_filters = ['gender','state','country','examenrolled','examdefault','examselected']                 proffilters = {}                 #proffilters['filters'] = {}                 flter in stdd_filters:                         if flter in filter_list:                                 proffilters[flter] = request.post.getlist(flter)                         else:                                 proffilters[flter] = []                 print proffilters                  if not request.post._mutable:                     request.post._mutable = true                    request.post['filters'] = proffilters                  if 'and' in request.data:                      print "true and"                      **#problem here**                      #return redirect('profile_filter_and')                      return httpresponseredirect('../filtered/and/')          elif request.method == 'get':              return render(request,"filters.html",{})  @api_view(['post'])     def profile_filter_and(request):       if request.method == post:          #entire code  

i have tried both redirect , httpresponseredirect methods both of them call url or view functions request due following error :

http 405 method not allowed allow: post, options content-type: application/json vary: accept  {     "detail": "method \"get\" not allowed." } 

whereas want redirection post request url or view since accepts post requests. have tried searching same on internet haven't got fruitful. newbie in developing apis in django. so, please help.

"i have tried both redirect , httpresponseredirect methods both of them call url or view functions get"

this because redirecting post data considered bad design choice , not supported django in obvious way. check out answer similar question:

https://stackoverflow.com/a/3024528/4400065

one simple solution problem passing data function, instead of sending antoher http request.


Comments