我使用django modelform来保存数据,
我使用ajax,因此它不会重定向到其他页面。
提交时,视图create_post
将处理它。
但我有一个问题,如果我在电子邮件中输入'abc'并提交。
我知道它不会通过验证,但它不会打印错误消息,让用户知道错误在哪里
如何编辑才能到达它?
请指导我。谢谢。
[编辑]
当我编辑此return render(request, "zh_tw/maininfo.html#5thpage",{form: 'form'})
时
现在如果我在电子邮件字段中输入'abc',帖子就是200 ok
但当它回显到这个页面时,它会提醒'错误!'
好像它在ajax中运行这部分:
error: function(ts){
alert('ERROR!!!');
window.location.reload();
},
模板/ main.html中
<script type="text/javascript">
$( document ).ready(function() {
$.ajaxSetup({
data: { csrfmiddlewaretoken: '{{ csrf_token }}' },
});
// Submit post on submit
$('#create_post').on('submit', function(event){
event.preventDefault();
var name = $("#name").val();
var email = $("#email").val();
var message = $("#message").val();
$.ajax({
url: '{% url 'core:create_post' %}',
data: { "name":name,"email":email,"message":message,},
type: 'POST',
async: false,
dataType: 'json',
error: function(ts){
alert('ERROR!!!');
window.location.reload();
},
success: function(dataArr){
if(dataArr == 2){
alert('success!');
window.location.reload();
}else{
alert('something wrong!');
window.location.reload();
}
}
});
});
});
</script>
<div class="section" id="contact">
<div class="message">
<form action="." method="POST" id="create_post">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form }}
<div>
<input type="text" name="FirstName" id="name" placeholder="your name">
<input type="text" name="Email" id="email" placeholder="your email">
</div>
<textarea placeholder="talk?" name = "Message" id="message"></textarea>
<br>
<button type="submit" value="Submit" id="submit">submit</button>
</form>
</div>
</div>
views.py
def maininfo(request):
# return render(request, 'english/maininfo.html',)
return render(request, 'zh_tw/maininfo.html',)
def create_post(request):
if request.method == 'POST':
form = MessageForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.ip = request.META['REMOTE_ADDR']
obj.save()
return HttpResponse(2)
return render(request, "zh_tw/maininfo.html#5thpage",{form: 'form'})
答案 0 :(得分:0)
这将呈现表单错误并在您拥有它们时形成非字段错误。
<div class="section" id="contact">
<div class="message">
<form action="." method="POST" id="create_post">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form }}
<button type="submit" value="Submit" id="submit">submit</button>
</form>
</div>
</div>
这是一个有点改进的观点:
def create_post(request):
form = MessageForm(request.POST or None)
if form.is_valid():
obj = form.save(commit=False)
obj.ip = request.META['REMOTE_ADDR']
obj.save()
return render_to_response(request, template="your_template.html", context={form: 'form'})