在带有学生数据库的APP应用中设计一个视图show_students(),用于筛选学生。筛选要求是:选取年龄在20-50岁间所有的男同学,并按照年级增序排列。将筛选出的数据通过render方法渲染到前端页面显示(利用 context 进行数据传递)
2、在前端 template 模板中设计一个showStudents.html文件,利用模板语法以列表的形式,将视图中筛选出的数据展示出来
3、可以在页面上自定义显示的数据项,如姓名、学号、年龄、班级等(可自由选择),并显示符合条件的总人数
下面是一个实现上述要求的 Django 视图 show_students() 的示例代码:
from django.shortcuts import render
from myapp.models import Student
def show_students(request):
# 筛选年龄在20-50岁之间的男同学
students = Student.objects.filter(gender='male', age__range=(20, 50)).order_by('grade')
# 构造要显示的数据列表
data_list = []
for student in students:
data = {
'name': student.name,
'student_id': student.student_id,
'age': student.age,
'class_name': student.class_name,
}
data_list.append(data)
# 将数据通过 context 传递到模板中进行渲染
context = {
'data_list': data_list,
'total_count': students.count(),
}
return render(request, 'showStudents.html', context)
在上述代码中,首先通过 Student.objects.filter() 方法筛选年龄在20-50岁之间的男同学,并按照年级升序排序。然后,使用一个循环构造要显示的数据列表 data_list,其中包括每个学生的姓名、学号、年龄和班级。最后,将 data_list 和符合条件的学生总数 students.count() 一起通过 context 传递到模板 showStudents.html 中进行渲染。
下面是一个示例的 showStudents.html 模板,用于显示筛选出的学生信息:
<h1>筛选出的学生信息</h1>
<p>符合条件的学生总数:{{ total_count }}</p>
<ul>
{% for data in data_list %}
<li>{{ data.name }} ({{ data.student_id }}, {{ data.age }}, {{ data.class_name }})</li>
{% endfor %}
</ul>
在上述模板中,使用模板语法将 data_list 中的学生信息以列表的形式展示出来。同时,还显示符合条件的学生总数 total_count。可以根据需要自由选择要显示的数据项。
通过上述代码和模板,就可以实现在 Django 应用中筛选学生并将结果显示在前端页面中的功能。需要注意的是,上述代码仅作为示例,实际使用时可能需要根据具体的应用场景进行修改和优化。