学员管理系统——之老师管理
老师管理
老师表结构
class Teacher(models.Model):
name = models.CharField(max_length=32)
classes = models.ManyToManyField('Classes')
查询老师
URL设计:
urls.py的urlpatterns列表中增加如下url:
url(r'^teacher_list/', views.teacher_list, name='teacher_list'),
视图函数:
def teacher_list(request):
teacher_obj_list = models.Teacher.objects.all()
return render(request, 'teacher_list.html', {'list': teacher_obj_list})
teacher_list.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>列表展示</title>
</head>
<body>
<div>
<table border="1">
<thead>
<tr>
<th>序号</th>
<th>老师姓名</th>
<th>所教班级</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for obj in list %}
<tr>
<th>{{ obj.id }}</th>
<td>{{ obj.name }}</td>
<td>
{% for class in obj.classes.all %}
<{{ class.name }}>
{% endfor %}
</td>
<td>
<a href="/edit_teacher/?id={{ obj.id }}">编辑</a> |
<a href="/del_teacher/?id={{ obj.id }}">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
新增老师
URL设计:
url(r'^add_teacher/', views.add_teacher, name='add_teacher'),
视图函数:
def add_teacher(request):
error_msg = ''
class_obj_list = models.Classes.objects.all()
if request.method == 'POST':
teacher_name = request.POST.get('teacher')
class_ids = request.POST.getlist('class_ids')
if teacher_name:
new_teacher_obj = models.Teacher.objects.create(name=teacher_name)
new_teacher_obj.classes.set(class_ids)
return redirect('/teacher_list/')
else:
error_msg = '老师姓名不能为空,请重新输入'
return render(request, 'add_teacher.html', {'list': class_obj_list, 'error_msg': error_msg})
add_teacher.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>增加老师</title>
</head>
<body>
<div style="margin-top: 30px">
<form action="" method="post">
<p>
<label for="teacher">老师姓名:</label>
<input type="text" id="teacher" name="teacher">
</p>
<p>
<label for="class">所教班级:</label>
<select name="class_ids" id="class" multiple>
{% for class in list %}
<option value="{{ class.id }}">{{ class.name }}</option>
{% endfor %}
</select>
</p>
<p>
<button type="submit">提交</button>
</p>
</form>
{% if error_msg %}
<p style="color: red">{{ error_msg }}</p>
{% endif %}
</div>
</body>
</html>
注意:
提交POST请求前注释掉settings.py文件中45行上下的 'django.middleware.csrf.CsrfViewMiddleware',
或者在HTML代码的form标签内加上 {% csrf_token %}的标签。二者选一即可提交POST请求。
另:可在teacher_list.html的代码中添加一个a标签: <a href="/add_teacher/">新页面添加</a>
删除老师
URL设计:
url(r'^del_teacher/', views.del_teacher, name='del_teacher'),
视图函数:
def del_teacher(request):
teacher_id = request.GET.get('id')
del_list = models.Teacher.objects.filter(id=teacher_id)
if del_list:
del_list.delete()
return redirect('/teacher_list/')
else:
return HttpResponse('删除错误')
HTML部分:
在老师列表的表格中添加删除的a标签。
<a href="/del_teacher/?id={{ obj.id }}">删除</a>
编辑老师
URL设计:
url(r'^edit_teacher/', views.edit_teacher, name='edit_teacher'),
视图函数:
def edit_teacher(request):
teacher_id = request.GET.get('id')
error_msg = ''
teacher_obj = models.Teacher.objects.filter(id=teacher_id).first()
classes_list = models.Classes.objects.all()
if request.method == 'POST':
teacher_name = request.POST.get('teacher_name')
class_ids = request.POST.getlist('class_ids')
if teacher_name:
teacher_obj.name = teacher_name
teacher_obj.classes.set(class_ids)
teacher_obj.save()
return redirect('/teacher_list/')
else:
error_msg = '老师姓名不能为空,请重新输入'
return render(request, 'edit_teacher.html',
{'teacher_obj': teacher_obj, 'classes_list': classes_list, 'error_msg': error_msg})
HTML部分:
在老师列表的表格中添加编辑的a标签。
<a href="/edit_teacher/?id={{ obj.id }}">编辑</a>
edit_teacher.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>修改老师</title>
</head>
<body>
<div style="margin-top: 30px">
<form action="" method="post">
<p>
<label for="teacher">老师姓名:</label>
<input type="text" id="teacher" name="teacher_name" value="{{ teacher_obj.name }}">
</p>
<p>
<label for="class">所教班级:</label>
<select name="class_ids" id="class" multiple>
{% for class in classes_list %}
{% if class in teacher_obj.classes.all %}
<option selected value="{{ class.id }}">{{ class.name }}</option>
{% else %}
<option value="{{ class.id }}">{{ class.name }}</option>
{% endif %}
{% endfor %}
</select>
</p>
<p>
<button type="submit">提交</button>
</p>
</form>
{% if error_msg %}
<p style="color: red">{{ error_msg }}</p>
{% endif %}
</div>
</body>
</html>

浙公网安备 33010602011771号