Ajax-запрос печатает json-ответ на пустой html-странице вместо html-страницы регистрации
Я делаю сайт на django с ajax.Я создал базовый html файл django template и два других html шаблона под названиями signup.html и home.html.
Я написал код для выполнения ajax запроса с формой регистрации в файле base.html следующим образом.
$("#signupBtn").click(function() {
event.preventDefault();
username=$('#id_username').val();
password1=$('#id_password1').val();
password2=$('#id_password2').val();
data={username=username,password1=password1,password2=password2}
$.ajax({
type:'POST',
url:'{% url "signup" %}',
data:data,
success:function(response){
// $('#msg').html(`<p style="font-size: 30px;color: lime;font-weight: bold;">User created succcess!</p>`);
console.log('FORM SUCCESS!')
window.location='{% url "home" %}'
},
error:function(){
}
})
});
и мои просмотры подписчиков выглядят следующим образом:
class signup(View):
def post(self,request):
fm=UserCreationForm(request.POST)
if fm.is_valid():
fm.save()
return JsonResponse({'status':1})
fm=UserCreationForm()
return JsonResponse({'status':0})
def get(self,request):
fm=UserCreationForm()
return render(request,"home/signup.html",{"form":fm})
Основная проблема заключается в следующем, когда идет Get request форма отображается и мы можем ввести все данные для создания аккаунта, а также аккаунт успешно создан в панели администратора, но в post request, после сохранения формы, я получаю json ответ напечатанный на пустой странице, вместо того, чтобы снова получить ту страницу регистрации.
Как можно вернуться на ту же страницу после выполнения post-запроса?
ЭТО ПРОБЛЕМА: пожалуйста, проверьте проблему, как показано на изображении
Я не уверен, что данные успешно отправляются, поскольку синтаксис неправильный. Должно быть так:
// (I'm not sure if you need the quotes in JQuery)
data = {
'username': username,
'password1': password1,
'password2': password2
}
Причина отсутствия перенаправления заключается в том, что window.location не перенаправляет вас на другую страницу. Если вы хотите сделать перенаправление, сделайте:
window.location.href = '{% url "home" %}'
Я здесь новый программист, поэтому не вините меня, если я ошибаюсь, но вот мое мнение по этому поводу, вы можете попробовать это для инициализации вашего объекта
var data = {
'username': $('#id_username').val() ,
'password1': $('#id_password1').val() ,
'password2': $('id_password2').val()
}
console.log(data)
Другая причина, по которой ваше значение не передается успешно, может быть связана с тем, что ваш dataType не назначен, когда вы посылаете свой объект, который вы должны включить в ваш ajax, который является
dataType: 'json'