フロントエンドからDjangoアプリケーションにいくつかの値を送信しようとしています。これらの値を操作して別のビューにリダイレクトしたいのですが、Djangoは何もリダイレクトもレンダリングもしていないようです。DjangoはPOSTリクエストを受け取った後リダイレクトしません
これは私urls.py
from django.conf.urls import url
from . import settings
from personality_form import views
urlpatterns = [
url(r'^$', views.home, name="home"),
url(r'^apiLogin/(?P<_id>\d+)$', views.apiLogin,name="apiLogin"),
url(r'^formulario/(?P<_id>\d+)$', views.formulario, name="formulario"),
]
ですこれは私のviews.py
from django.shortcuts import render, redirect
from personality_form.models import *
from personality_form.forms import *
from django.views.decorators.csrf import csrf_exempt
def home(request):
return render(request, 'index.html')
def formulario(request, _id):
if (request.method == 'POST'):
form = personalityForm(request.POST)
else:
form = personalityForm()
return render(request, 'formulario.html', {'form': form})
@csrf_exempt
def apiLogin(request, _id):
if (request.method == 'POST'):
return redirect('/formulario/'+_id)
であり、これは私が前からPOSTリクエストを送信するために使用しているjavascript関数です。
function test() {
var http = new XMLHttpRequest();
http.open('POST', '/apiLogin/1234', true);
http.setRequestHeader('Content-type', 'application/json');
var payload = {userID: "1234", access: "4567"};
var params = JSON.stringify(payload);
// Send request
http.send(params);
}
POSTをapiLoginビューに送信しようとしました。私はそれがそのビューに入っていることを確認しますが、私はformularioビューにリダイレクトしようとすると、formularioコードに入りますが、render命令を実行していないようです。レンダリングのリダイレクト機能を変更しようとしましたが、新しいhtmlも表示しません。
URLをリダイレクトして正面を変更しない理由はありますか?
私はDjango 1.11とPython 3.6を使用しています。
エラーまたはスタックトレースが表示されますか。 –
いいえPOSTは "POST/apiLogin/1234 HTTP/1.1" 302を返します。その後、 'formulario'ビューからコードを実行していますが、レンダリング命令を無視してURLを変更しないようです。 –
私は、コードをテストするためにJavaScript関数を使用していますか?それは正しくURLにリダイレクトされていますが、javascriptはそのリダイレクト命令で何もしていません。 –