• 项目中关于记录模块的代码


    更新学生学习记录:

    在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>
    
  • 相关阅读:
    无法往u盘里边复制超过4G的单个文件解决方法
    vue 自定义属性判断点击每个item 显示隐藏
    前端小组分享会之异步回调函数中的上下文
    git 的一些命令
    ES学习之promise
    mac找到占用端口号的进程ID
    meta link
    webpack学习笔记--安装
    css样式之 direction
    日常积累之JSON.stringify和JSON.parse substr
  • 原文地址:https://www.cnblogs.com/Zhao159461/p/11087176.html
Copyright © 2020-2023  润新知