一,需求分析
二,设计模型类(数据库表)models.py
from django.db import models
"""
实体类
"""
class Department(models.Model):
dname = models.CharField(max_length=100,unique=True,null=False,verbose_name="部门名称")
isDelete = models.BooleanField(default=False)
def __str__(self):
return "Department(dname=%s)" % self.dname
class Meta:
db_table = 'department_info'
verbose_name = "部门表"
verbose_name_plural = "部门表"
class Staff(models.Model):
sname = models.CharField(max_length=100,unique=True,null=False, verbose_name="员工名称")
sdepartment = models.ForeignKey(Department,null=True)
isDelete = models.BooleanField(default=False)
bpubdate = models.DateField(null=False)
def __str__(self):
return "Staff(sname=%s)" % self.sname
class Meta:
db_table = 'staff_info'
verbose_name = "员工表"
verbose_name_plural = "员工表"
from django.conf.urls import url ,include
from django.contrib import admin
from bumen import views
"""
这里一定加$
"""
#
urlpatterns = [
url(r'^staff$', views.staff_select_all, name="staff_select_all"),
url(r'^staff_edit$', views.staff_edit, name='staff_edit'),
url(r'^staff_edit_handler$', views.staff_edit_handler,name='staff_edit_handler'),
url(r'^staff_delete$', views.staff_delete, name='staff_delete'),
url(r'^staff_insert$', views.staff_insert, name='staff_insert'),
url(r'^staff_insert_handler$', views.staff_insert_handler, name='staff_insert_handler'),
url(r'^getsname$', views.getsname, name='getsname'),
]
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.shortcuts import render,HttpResponse,redirect
from bumen.models import *
import time, datetime
import json
def staff_select_all(request):
staff_list = Staff.objects.all()
for i in staff_list:
i.bpubdate = i.bpubdate.strftime("%Y/%m/%d")
return render(request, 'bumen/staff_list.html', {'staff_list': staff_list})
def staff_edit(request):
#准备数据1
sid=request.GET.get('sid')
staff=Staff.objects.get(id=sid)
# 准备数据2
department_list = Department.objects.all()
return render(request,'bumen/staff_edit.html',{'staff':staff,'department_list':department_list})
def staff_edit_handler(request):
#接受参数
sid=request.POST.get('sid')
sname = request.POST.get('sname')
sdepartment_id = request.POST.get('sdepartment_id')
isDelete = request.POST.get('isDelete',False)
# 查询
staff = Staff.objects.get(id=sid)
'''更新数据库'''
#修改
staff.sname=sname
staff.sdepartment_id = sdepartment_id
staff.isDelete = isDelete
staff.save()
return redirect(reverse('bumen:staff_select_all'))
def staff_delete(request):
print('111')
# 接受参数
sid = request.GET.get('sid')
# 查询
staff = Staff.objects.get(id=sid)
# 删除
staff.delete()
return redirect(reverse('bumen:staff_select_all'))
def staff_insert(request):
# 准备数据:所有的Department
department_list = Department.objects.all()
return render(request,'bumen/staff_insert.html',{'department_list':department_list})
def staff_insert_handler(request):
#接受参数
sname = request.POST.get('sname')
sdepartment_id = request.POST.get('sdepartment_id')
bpubdate = request.POST.get('bpubdate')
#新增
staff=Staff()
staff.sname=sname
staff.sdepartment_id = sdepartment_id
staff.bpubdate=bpubdate
staff.save()
return redirect(reverse('bumen:staff_select_all'))
def getsname(request):
sname = request.GET.get("sname")
if sname == "":
ret = {
"ret": []
}
return HttpResponse(json.dumps(ret, ensure_ascii=False), content_type="application/json;charset=utf-8")
sname_list = Staff.objects.filter(sname__icontains=sname).values("sname") #icontains:忽略大小写状态下的模糊查询,contains: 精确大小写状态下的模糊查询
info = []
for i in sname_list:
d = {}
d["sname"] = i["sname"]
info.append(d)
ret = {
"ret": info
}
return HttpResponse(json.dumps(ret, ensure_ascii=False), content_type="application/json;charset=utf-8")
五,templates/bumen下的3个html文件
1.查询删除staff_list.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>staff_list.html</title>
<script src="/static/js/jquery-1.12.4.js"></script>
</head>
<body>
<table>
{% for i in staff_list %}
<tr>
<td>{{ forloop.counter}}</td>
<td><a href="#">{{i.sname}}</a></td>
<td><a href="#">{{i.sdepartment.dname}}</a></td>
<td><a href="#">{{i.bpubdate}}</a></td>
<td><a href="{% url 'bumen:staff_edit'%}?sid={{i.id}}">编辑</a></td>
<td><a href="{% url 'bumen:staff_delete'%}?sid={{i.id}}">删除</a></td>
</tr>
{% endfor %}
</table>
<div>
<a href="{% url 'bumen:staff_insert'%}">新增</a>
</div>
</body>
</html>
2.增加staff_insert.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>staff_insert.html</title>
<script src="/static/js/jquery-1.12.4.js"></script>
</head>
<body>
<form action="{% url 'bumen:staff_insert_handler' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<table>
<tr>
<td>员工姓名</td>
<td>
<input id = "sname" name="sname" />
<div id="show">
<ul></ul>
</div>
</td>
</tr>
<tr>
<td>入职日期</td>
<td>
<input name='bpubdate'/>
</td>
</tr>
<tr>
<td>所属部门</td>
<td>
<select name="sdepartment_id">
{% for i in department_list%}
<option value="{{i.id}}">{{i.dname}}</option>
{%endfor%}
</select>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" />
</td>
<td colspan="2">
<input type="reset">
</td>
</tr>
</table>
</form>
<script src="/static/js/jquery-1.12.4.js"></script>
<script>
$(function () {
$("#sname").keyup(function () {
console.log($(this).val().trim())
$.ajax({
"url": "/bumen/getsname",
"data": {
"sname":$(this).val().trim()
},
"success": function (data) {
$("#show ul").html("")
if(data.ret.length!=0){
data.ret.forEach(function (value) {
$("#show ul").append("<li>" + '用户名已存在' + "</li>")
// $("#show ul").append("<li>" + value["sname"] + "</li>")
})
}else {
$("#show ul").append("<li>" + '用户名可用'+ "</li>")
}
},
})
})
})
</script>
</body>
</html>
3.修改staff_edit.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>staff_list.html</title>
<script src="/static/js/jquery-1.12.4.js"></script>
</head>
<body>
<form action="{% url 'bumen:staff_edit_handler' %}" method="post" enctype="multipart/form-data" >
<input type="hidden" value="{{staff.id}}" name='sid' />
<table>
<tr>
<td>员工姓名</td>
<td>
<!--name是控件的名称 ,value是控件的值, id是控件的身份标志。-->
<input name='sname' value="{{ staff.sname }}"/>
</tr>
<tr>
<td>所属部门</td>
<td>
<select name="sdepartment_id">
{% for i in department_list %}
{% if staff.sdepartment_id == i.id %}
<option value="{{i.id}}" selected>{{i.dname}}</option>
{%else%}
<option value="{{i.id}}">{{i.dname}}</option>
{%endif%}
{%endfor%}
</select>
</td>
</tr>
<tr>
<td>是否删除</td>
<td>
<input type="checkbox" value="1" name="isDelete" {% if staff.isDelete %}checked{% endif %} />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" />
</td>
</tr>
</table>
</form>
</body>
</html>
附录:项目文件位置