标签:key study 记录 代码 record score 模块 pk class
更新学生学习记录:
在views.py 中
class StudyRecordDetailView(View):
def get(self,request,class_record_id):
#找到要跟进的班级信息:
class_record_obj = models.ClassStudyRecord.objects.get(pk=class_record_id)
all_study_record = models.StudentStudyRecord.objects.filter(classstudyrecord = class_record_obj)
#把分数列表传到前端页面上显示:
score_choices = models.StudentStudyRecord.score_choices
return render(request,'student/study_record_detail.html',{'class_record_obj':class_record_obj,'all_study_record':all_study_record,'score_choices':score_choices})
def post(self,request,class_record_id):
for key , val in request.POST.items():
if key == 'crsfmiddlewaretoken':
continue
field,pk = key.rsplit('_',1)
models.StudentStudyRecord.objects.filter(**{'pk':pk}).update(**{field:val})
return self.get(request,class_record_id)
return redirect(reverse('study_decord',args=(class_record_id, )))
#对重复性操作我们选择更改数据结构
'''
更改数据结构:
{
1:{'score':85,'homework_note':'333'},
2: {'score':85,'homework_note':'333'},
}
'''
data_dict = {}
for key , val in request.POST.items():
if key == 'crsfmiddlewaretoken':
continue
field,pk = key.rsplit('_',1)
if pk in data_dict:
data_dict[pk][field] = val
else:
data_dict[pk]={
field:val,
}
for spk,sdata in data_dict.items():
models.StudentStudyRecord.objects.filter(**{'pk':spk}).update(**sdata)
return redirect(reverse('study_decord',args=(class_record_id, )))
study_record_detail.html
<div class="container">
<form action="" method="post">
{% csrf_token %}
<table class="table table-hover table-striped">
<thead>
<tr>
<th>编号</th><!--表头-->
<th>姓名</th>
<th>考勤</th>
<th>成绩</th>
<th>批语</th>
</tr>
</thead>
<tbody>
{% for studentstudyrecord in all_study_recored %}
<tr>
<td>{{ forloop.counter }}</td><!--表格单元-->
<td>{{ studentstudyrecord.student }}</td>
<td>{{ studentstudyrecord.get_record_display }}</td>
<td>
<select name="score_{{ studentstudyrecord.pk }}" id="">
{% for choice in score_choices %}
{% if studentstudyrecord.score == choice.0 }
<option value='{{choice.0}}' selected>
{{ choice.1 }}
</option>
{% else %}
<option value='{{ choice.0 }}'>
{{ choice.1}}
</option>
</select>
</td>
<td>
<textarea name="homework_note_{{ studentstudyrecord.pk }}" id="" cols="20" rows="1" class="form-control">{{ studentstudyrecord.homework_note|default:"" }}</textarea>
<!--default是设置默认值-->
</td>
</tr>
{% endfor %}
</tbody>
</table>
<input type="submit" class="btn btn-success pull-right" value="保存">
</form>
</div>
<hr>
</body>
</html>
知识点补充:
- selected属性
带有预先选定的选项下来列表:
<option selected='selected'>aabb</option>
定义和用法:
selected 属性规定在页面加载时预先选定该选项。
被预选的选项会显示在下拉列表的最前面的位置。
也可以在页面加载后通过JavaScript设置selected属性。
实例:
<html>
<body>
<select>
<option>Volvo</option>
<option selected="selected">Saab</option>
<option>Mercedes</option>
<option>Audi</option>
</select>
</body>
</html>
这时多选框显示Saab 下拉后显示Volvo,Mercedes,Audi
- textarea
文本描述 textarea
定义和用法:
<textarea> 标签定义多行的文本输入控件。
文本区可容纳无限量的文本,其中的文本默认字体是等宽字体。
可以通过cols和rows属性来规定textarea的尺寸,不过更好的办法是使用css的height和width属性。
实例:
<textarea rows="3" cols="20">
</textarea>
- table标签
HTML <table>标签
<table border='1'>
<tr>
<th>Month</th>
<th>Savings</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
</table>
定义和用法:
<table>标签定义HTML表格
简单的HTML表格由table元素以及一个或多个tr、th或td元素组成。
tr元素定义表格行,th元素定义表头,td元素定义表格单元
forloop
forloop.counter 表示当前迭代数从1开始 forloop.counter0 表示从0开始 forloop.first 判断此循环是否是第一次循环
点击学详,进入待编辑的班级:
<td><a href='{% url 'study_decord' record.pk} %'>学详</a></td>
标签:key,study,记录,代码,record,score,模块,pk,class 来源: https://www.cnblogs.com/Zhao159461/p/11087176.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。