gpt4 book ai didi

javascript - Ajax调用后,django不重定向给定的url?

转载 作者:行者123 更新时间:2023-12-03 08:10:56 25 4
gpt4 key购买 nike

我想在数据库中保存数据的同时加载图像。所以,我调用 Ajax 来做到这一点。我使用 Django 1.8,在成功添加数据后,放置 Ajax 调用 Django 不会重定向默认页面。我成功检查保存中的数据,并且 view.py 方法也运行。

之前,当我向论坛提交无效数据时进行 Ajax 调用,提交时会显示验证错误。但现在只能查看 Ajax 错误消息。

before add ajax call

但是添加ajax之后,现在我输入没有数据的提交没有显示上面的指令(验证错误)。我使用 Django 默认验证,它们是在创建表单时定义的模型类。

----------------keylist.html---------------------------------------- --

{ % extends "base.html" %}
{% load crispy_forms_tags %}

{% block title %}
{% if create %}Create{% else %}New Key{% endif %}Serious
{% endblock %}

{% block heading %}
<h2>
Create New Serial Keys
</h2>
{% endblock %}

{% block content %}
{% if create %}
{% url "marcador_key_create" as action_url %}
{% else %}
{% url "marcador_bookmark_search" pk=form.instance.pk as action_url %}
{% endif %}
<form action="{{ action_url }}" method="post" accept-charset="utf-8" id="createForm" >
{{ form|crispy }}
{% csrf_token %}
<div id="submit_loader"></div>
<p> <b>Expiry Date*:</b> <input type="date" id="datepicker" name="expier_date"></p>
<p><input type="submit" class="btn btn-default" value="Save" id="save_button"> </p>

</form>

{% endblock %}

--------base.html(ajax方法)-------------------------------- ----

   <script>
// Attach a submit handler to the form
$("#createForm").submit(function (event) {
event.preventDefault();

//var formData = new FormData($("#createForm")[0]);
var serverUrl =$("#createForm").attr('action');

$.ajax({
url: serverUrl,
type: 'POST',
data: $("#createForm").serialize(),

beforeSend: function() {
$('#submit_loader').css('display','block');
},
complete: function(){
$('#submit_loader').css('display','none');
},
success: function (returndata) {
alert("succsesfully generate keys");
//window.location("xsd");
//return false;
},
error: function(data){
alert("please ,check you fill form correctly");
}
});
//return false;
});
</script>

---------view.py(调用方法)---------------------------- ---

   @login_required
def key_create(request):
#print(request.POST)

if request.method == 'POST':
form = KeyGenarateForm(data=request.POST)
expier_date = request.POST['expier_date']
#print(expier_date=="")
if(expier_date==""):
form.is_valid= False;


if form.is_valid():
#request.POST._mutable = True
Key_Gen = form.save(commit=False)
Key_Gen.save(expier_date)
return redirect('marcador_bookmark_user',username=request.user.username)
else:
print('form not valied')
return render('marcador_bookmark_user',username=request.user.username)
else:
form = KeyGenarateForm()

context = {'form': form, 'create_key': True}
return render(request, 'marcador/key_genarate_form.html', context)

当我输入有效数据并提交时,我进行了测试,一切都成功,但没有重定向我的网址。它在字段中显示我的旧数据。

因为,我注意到 view.py 返回方法未加载。

  return redirect('marcador_bookmark_user',username=request.user.username)

不执行。

请期待专家的帮助。

最佳答案

也许这会对您有所帮助:

而不是在views.py中进行此重定向:

return redirect('marcador_bookmark_user',username=request.user.username)

使用这个:

return HttpResponse(json.dumps([{username=request.user.username}]),mimetype='text/json')

最后关于ajax成功函数:

window.location.href = '/url-path'+data.username; 

(用户名将是名为“data”的上下文中的键)。

关于javascript - Ajax调用后,django不重定向给定的url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34150295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com