【发布时间】:2020-10-19 14:09:15
【问题描述】:
我想创建一个学校网站,您必须在其中输入邀请码才能注册。我想使用 ajax POST 请求验证此代码,但是当我尝试发出验证视图的请求时,它会使用 JSON 代码重定向到页面。
我的 AJAX :
{%extends "base.html"%}
{%block content%}
<script>
$('#code_form').on('submit', function(evt){
evt.preventDefault();
let form = evt.target
$.ajax({
url: form.action,
type: "POST",
data: {'code': $('input[name="code"]')},
headers: {'X-CSRFToken': "{{csrf_token}}"},
success: function(data){
window.location.href = data.url;
let status = JSON.parse(data)['ok']
if(status){
console.log('Good code');//This not executing
}else{
console.log('Bad code');//this too
}
}
})
});
</script>
<form method = "POST" id = "code_form" action="{%url 'reg:submit'%}">
{%csrf_token%}
Enter your invite code: {{form.code}}<br>
<button id = "submit">Continue</button>
</form>
{%endblock%}
Views.py:
from .forms import StartF #form for code (contains only one field)
from django.http import JsonResponse
from django.core.exceptions import ObjectDoesNotExist
#here must be one more view, but it works fine
def submit(request):
code = request.POST.get('code')
data = {}
try:
user = Unregistered.objects.all().get(pk = code)
except ObjectDoesNotExist:
data['ok'] = False
else:
data['ok'] = True
return JsonResponse(data)
我的 urls.py:
from django.urls import path
from . import views
from django.conf.urls import url
app_name = 'reg'
urlpatterns = [
url(r'^$', views.start, name='start'), #that one view
url(r'^ajax/submit/$', views.submit, name='submit'),#this view works not fine.
]
【问题讨论】: