我想在数据库中保存数据时加载图像。所以,我在Ajax上调用它。我使用Django 1.8并且在放入Ajax之后调用Django成功添加数据后没有重定向默认页面。我在保存成功时检查数据,并且view.py方法也运行。
在我向论坛提交无效数据并提交时,在调用Ajax之前,显示验证错误。但现在只查看Ajax错误消息。
但是在添加ajax之后,现在我输入submit而没有数据没有显示上面的指令(验证错误)。我使用了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 method)--------------------------------- ----
<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)
不执行。
请,期待一些专家的帮助。
答案 0 :(得分:1)
这可能会对你有所帮助:
而不是在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”的上下文中的一个键。)