from Mic
task_list.html
{% extends 'layout.html' %}
{% block content %}
<div class="container">
<div class="panel panel-default">
<div class="panel-heading">表单</div>
<div class="panel-body">
<form id="formAdd">
<div class="clearfix">
{% for field in form %}
<div class="col-xs-6">
<div class="form-group" style="position: relative;margin-bottom: 20px;">
<label>{{ field.label }}</label>
{{ field }}
<span class="error-msg" style="color: red;position:absolute;"></span>
</div>
</div>
{% endfor %}
<div class="col-xs-12">
<button id="btnAdd" type="button" class="btn btn-primary">提 交</button>
</div>
</div>
</div>
</form>
</div>
<hr />
<h1>Ajax知识</h1>
<h3>示例1</h3>
<input id="btn1" type="button" class="btn btn-primary" value="点击1" />
<h3>示例2</h3>
<input id="txtUser" type="text" placeholder="姓名">
<input id="txtAge" type="text" placeholder="年龄">
<input id="btn2" type="button" class="btn btn-primary" value="点击2" />
<h3>示例3</h3>
<form id="form3">
<input name="User" type="text" placeholder="姓名">
<input name="Age" type="text" placeholder="年龄">
<input name="Email" type="text" placeholder="邮箱">
<input name="More" type="text" placeholder="介绍">
</form>
<input id="btn3" type="button" class="btn btn-primary" value="点击3" />
</div>
{% endblock %}
{% block js %}
<script type="text/javascript">
$(function () {
// 页面框架加载完成之后代码自动执行
bindBtn1Event();
bindBtn2Event();
bindBtn3Event();
bindBtnAddEvent();
})
function bindBtn1Event() {
$("#btn1").click(function () { // btn1是表单id
$.ajax({
url: '/task/ajax/',
type: "post",
data: {
n1: 123,
n2: 456
},
dataType:"JSON",
success: function (res) {
console.log(res);
console.log("111");
console.log(res.status);
console.log(res.data);
}
})
})
}
function bindBtn2Event(){
$("#btn2").click(function () { // btn1是表单id
$.ajax({
url: '/task/ajax/',
type: "post",
data: {
name: $("#txtUser").val(),
age: $("#txtAge").val()
},
dataType:"JSON",
success: function (res) {
console.log(res);
console.log("111");
console.log(res.status);
console.log(res.data);
}
})
})
}
function bindBtn3Event(){
$("#btn3").click(function () { // btn1是表单id
$.ajax({
url: '/task/ajax/',
type: "post",
data: $("#form3").serialize(),
dataType:"JSON",
success: function (res) {
console.log(res);
console.log("111");
console.log(res.status);
console.log(res.data);
}
})
})
}
function bindBtnAddEvent(){
$("#btnAdd").click(function () { // btn1是表单id
$.ajax({
url: '/task/add/',
type: "post",
data: $("#formAdd").serialize(),
dataType:"JSON",
success: function (res) {
if (res.status){
alert("添加成功");
}
else{
// console.log("77777");
// console.log(res.error);
// ///zheli
// console.log("88888");
$.each(res.error,function(name,data){
console.log(name,data);
$("#id_"+name).next().text(data[0]);
})
}
}
})
})
}
</script>
{% endblock %}
view.py
################################################################
from django.views.decorators.csrf import csrf_exempt
from django import forms
import json
@csrf_exempt
def task_ajax(request):
print(request.POST)
data_dict={"status":"yyyes","data":[11,22,33,44]}
return HttpResponse(json.dumps(data_dict))
class TaskModelForm(BootstrapModelForm):
class Meta:
model=models.Task
fields="__all__"
widgets={
"detail":forms.TextInput
#"detail":forms.Textarea
}
def task_list(request):
form=TaskModelForm()
return render(request,"task_list.html",{"form":form})
@csrf_exempt
def task_add(request):
print(request.POST)
form=TaskModelForm(data=request.POST)
if form.is_valid():
form.save()
print("-------------------------11111")
data_dict={"status":True}
return HttpResponse(json.dumps(data_dict))
data_dict={"status":False,"error":form.errors}
return HttpResponse(json.dumps(data_dict,ensure_ascii=False))
###################################################################
models.py
class Task(models.Model):
level_choices=(
(1,"紧急"),
(2,"重要"),
(3,"一般")
)
level=models.SmallIntegerField(verbose_name="级别",choices=level_choices,default=1)
title=models.CharField(verbose_name="标题",max_length=64)
detail=models.TextField(verbose_name="详细信息")
user=models.ForeignKey(verbose_name="负责人",to="Admin",to_field="id",on_delete=models.CASCADE)