分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

Django项目:CRM(客户关系管理系统)--71--61PerfectCRM实现CRM学生上传作业

发布时间:2023-09-06 01:52责任编辑:赖小花关键词:暂无标签
 1 # student_urls.py 2 # ————————60PerfectCRM实现CRM学生上课记录———————— 3 from django.conf.urls import url 4 from bpm.student import student_views 5 ?6 urlpatterns = [ 7 ????url(r‘^my_course/$‘, student_views.my_course, name=‘my_course‘), ??#学生报名的课程 8 ????url(r‘^studyrecords/(\d+)/$‘, student_views.studyrecords, name=‘studyrecords‘), ?# #学生上课记录列表 9 10 ????# ————————61PerfectCRM实现CRM学生上传作业————————11 ????url(r‘^homework_detail/(\d+)/(\d+)/$‘, student_views.homework_detail, name=‘homework_detail‘), ?# 作业详情12 ????# ————————61PerfectCRM实现CRM学生上传作业————————13 ]14 # ————————60PerfectCRM实现CRM学生上课记录————————
# student_urls.py
 1 # student_views.py 2 # ————————60PerfectCRM实现CRM学生上课记录———————— 3 from django.shortcuts import render 4 from crm import models 5 ?6 #学生报名的课程 7 def my_course(request): 8 ????return ?render(request, ‘bpm_student/my_course.html‘, locals()) 9 10 #学生上课记录列表11 def studyrecords(request,enroll_obj_id):12 ????enroll_obj=models.Enrollment.objects.get(id=enroll_obj_id)13 ????return render(request,‘bpm_student/studyrecords.html‘,locals())14 15 # ————————60PerfectCRM实现CRM学生上课记录————————16 17 # ————————61PerfectCRM实现CRM学生上传作业————————18 from django.shortcuts import HttpResponse #页面返回19 from PerfectCRM import settings #配置20 import os,json,time21 from ?django.contrib.auth.decorators import login_required #登陆才能访问22 #作业详情23 @login_required#登陆才能访问24 def homework_detail(request,enroll_obj_id,studyrecord_id):25 ????studyrecord_obj=models.StudyRecord.objects.get(id=studyrecord_id)#取学习记录 对象26 ????enroll_obj=models.Enrollment.objects.get(id=enroll_obj_id)#取班级对象27 ????# ??????????????作业根目录 ???班级ID ?????上课记录ID ??????????????学习记录ID28 ????homework_path="{base_dir}/{class_id}/{course_record_id}/{studyercord_id}/".format(29 ????????base_dir=settings.HOMEWORK_DATA, #静态配置文件30 ????????class_id=studyrecord_obj.student.enrolled_class_id,#09学习纪录#学生名字#所报班级ID号31 ????????course_record_id=studyrecord_obj.course_record_id,#09学习纪录#每节课上课纪录表32 ????????studyercord_id=studyrecord_obj.id##09学习纪录33 ????)34 ????print(‘homework_path路径:‘,studyrecord_obj.student.enrolled_class_id,studyrecord_obj.course_record_id,studyrecord_obj.id)35 36 ????if not os.path.isdir(homework_path):#没有目录 #isdir返回true,如果路径名是指现有的目录。37 ????????os.makedirs(homework_path,exist_ok=True)#创建目录  38 39 40 41 ????if request.method=="POST":#上传42 ????????print("POST",request.POST)43 ????????for k,v in request.FILES.items():#上传的文件44 ????????????with open(‘%s/%s‘%(homework_path,v.name),‘wb‘) as f:#chunk 写入文件45 ????????????????for chunk in v.chunks(): #循环写文件46 ????????????????????f.write(chunk)47 48 ????file_lists=[]#已经上传的文件列表49 ????for file_name in os.listdir(homework_path):50 ????????f_path=‘%s/%s‘%(homework_path,file_name)#文件名字51 ????????modify_time =time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(os.stat(f_path).st_mtime))#文件上传时间52 ????????file_lists.append([file_name,os.stat(f_path).st_size,modify_time])#添加到文件列表#文件名字#文件大小文件上传时间53 54 ????if request.method=="POST":55 ????????ret=False56 ????????data=request.POST.get(‘data‘) #ajax57 ????????if data:#如果有删除动作58 ????????????del_f_path="%s/%s"%(homework_path,data)#文件路径59 ????????????print(‘删除文件,路径:‘,del_f_path)60 ????????????os.remove(del_f_path) #删除61 ????????????ret=True62 ????????????return HttpResponse(json.dumps(ret))#ret=False63 ????????print("删除POST",request.POST)64 ????????return HttpResponse(json.dumps({"status":0,‘mag‘:"上传完成!",‘file_lists‘:file_lists}))#上传文件返回65 ????return render(request,‘bpm_student/homework_detail.html‘,locals())66 # ————————61PerfectCRM实现CRM学生上传作业————————
# student_views.py
 ?1 # settings.py ?2 ??3 """ ?4 Django settings for PerfectCRM project. ?5 ??6 Generated by ‘django-admin startproject‘ using Django 2.0.3. ?7 ??8 For more information on this file, see ?9 https://docs.djangoproject.com/en/2.0/topics/settings/ 10 ?11 For the full list of settings and their values, see 12 https://docs.djangoproject.com/en/2.0/ref/settings/ 13 """ 14 ?15 import os 16 ?17 # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 18 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 19 ?20 ?21 # Quick-start development settings - unsuitable for production 22 # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ 23 ?24 # SECURITY WARNING: keep the secret key used in production secret! 25 SECRET_KEY = ‘atkhzsd7emv4_okn@ynhji)p)qbpuvhq+a7@yx5=chaa0$l_br‘ 26 ?27 # SECURITY WARNING: don‘t run with debug turned on in production! 28 DEBUG = True 29 ?30 ALLOWED_HOSTS = [] 31 ?32 ?33 # Application definition 34 ?35 INSTALLED_APPS = [ 36 ????‘django.contrib.admin‘, 37 ????‘django.contrib.auth‘, 38 ????‘django.contrib.contenttypes‘, 39 ????‘django.contrib.sessions‘, 40 ????‘django.contrib.messages‘, 41 ????‘django.contrib.staticfiles‘, 42 ?????43 # ————————04PerfectCRM实现King_admin注册功能———————— 44 ????# ‘crm.apps.CrmConfig‘, 45 ????‘crm‘, 46 # ————————04PerfectCRM实现King_admin注册功能———————— 47 ?48 # ————————02PerfectCRM创建ADMIN页面———————— 49 ????‘king_admin‘, 50 # ————————02PerfectCRM创建ADMIN页面———————— 51 ????# ————————38PerfectCRM实现全局账号登录注销———————— 52 ????‘gbacc‘, 53 ????# ————————38PerfectCRM实现全局账号登录注销———————— 54 ?55 ????# ————————48PerfectCRM实现CRM客户报名流程学生合同———————— 56 ????‘bpm‘, 57 ????# ————————48PerfectCRM实现CRM客户报名流程学生合同———————— 58 ?59 ] 60 ?61 MIDDLEWARE = [ 62 ????‘django.middleware.security.SecurityMiddleware‘, 63 ????‘django.contrib.sessions.middleware.SessionMiddleware‘, 64 ????‘django.middleware.common.CommonMiddleware‘, 65 ????‘django.middleware.csrf.CsrfViewMiddleware‘, 66 ????‘django.contrib.auth.middleware.AuthenticationMiddleware‘, 67 ????‘django.contrib.messages.middleware.MessageMiddleware‘, 68 ????‘django.middleware.clickjacking.XFrameOptionsMiddleware‘, 69 ] 70 ?71 ROOT_URLCONF = ‘PerfectCRM.urls‘ 72 ?73 TEMPLATES = [ 74 ????{ 75 ????????‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘, 76 # ————————02PerfectCRM创建ADMIN页面———————— 77 ????????‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘), 78 ??????????????????os.path.join(BASE_DIR, ‘king_admin/king_templates‘), 79 ?80 # ————————03PerfectCRM创建基本数据———————— 81 ??????????????????os.path.join(BASE_DIR, ‘DBadd/DBadd_templates‘), 82 # ————————03PerfectCRM创建基本数据———————— 83 ????????????????# ————————38PerfectCRM实现全局账号登录注销———————— 84 ??????????????????os.path.join(BASE_DIR, ‘gbacc/gbacc_templates‘), 85 ????????????????# ————————38PerfectCRM实现全局账号登录注销———————— 86 ?87 ????????????????# ————————47PerfectCRM实现CRM客户报名流程———————— 88 ????????????????os.path.join(BASE_DIR, ‘bpm/bpm_templates‘), ] 89 ????????????????# ————————47PerfectCRM实现CRM客户报名流程———————— 90 ?91 , 92 # ————————02PerfectCRM创建ADMIN页面———————— 93 ????????‘APP_DIRS‘: True, 94 ????????‘OPTIONS‘: { 95 ????????????‘context_processors‘: [ 96 ????????????????‘django.template.context_processors.debug‘, 97 ????????????????‘django.template.context_processors.request‘, 98 ????????????????‘django.contrib.auth.context_processors.auth‘, 99 ????????????????‘django.contrib.messages.context_processors.messages‘,100 ????????????],101 ????????},102 ????},103 ]104 105 WSGI_APPLICATION = ‘PerfectCRM.wsgi.application‘106 107 108 # Database109 # https://docs.djangoproject.com/en/2.0/ref/settings/#databases110 111 DATABASES = {112 ????‘default‘: {113 ????????‘ENGINE‘: ‘django.db.backends.sqlite3‘,114 ????????‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),115 ????}116 }117 118 119 # Password validation120 # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators121 122 AUTH_PASSWORD_VALIDATORS = [123 ????{124 ????????‘NAME‘: ‘django.contrib.auth.password_validation.UserAttributeSimilarityValidator‘,125 ????},126 ????{127 ????????‘NAME‘: ‘django.contrib.auth.password_validation.MinimumLengthValidator‘,128 ????},129 ????{130 ????????‘NAME‘: ‘django.contrib.auth.password_validation.CommonPasswordValidator‘,131 ????},132 ????{133 ????????‘NAME‘: ‘django.contrib.auth.password_validation.NumericPasswordValidator‘,134 ????},135 ]136 137 138 # Internationalization139 # https://docs.djangoproject.com/en/2.0/topics/i18n/140 141 # ————————01PerfectCRM基本配置ADMIN————————142 #LANGUAGE_CODE = ‘en-us‘143 144 #英文转中文方法145 LANGUAGE_CODE = ‘zh-Hans‘146 # ————————01PerfectCRM基本配置ADMIN————————147 148 TIME_ZONE = ‘UTC‘149 150 USE_I18N = True151 152 USE_L10N = True153 154 USE_TZ = True155 156 157 # Static files (CSS, JavaScript, Images)158 # https://docs.djangoproject.com/en/2.0/howto/static-files/159 160 STATIC_URL = ‘/static/‘161 162 # ————————01PerfectCRM基本配置ADMIN————————163 STATICFILES_DIRS = [os.path.join(BASE_DIR,‘king_admin/static‘),164 # ————————01PerfectCRM基本配置ADMIN————————165 ????????????????????# ————————38PerfectCRM实现全局账号登录注销————————166 ????????????????????os.path.join(BASE_DIR, ‘gbacc/static‘),167 ????????????????????# ————————38PerfectCRM实现全局账号登录注销————————168 ????????????????????169 ????????????????????# ————————47PerfectCRM实现CRM客户报名流程————————170 ????????????????????os.path.join(BASE_DIR, ‘bpm/static‘),]171 ????????????????????# ————————47PerfectCRM实现CRM客户报名流程————————172 173 174 # ————————34PerfectCRM实现CRM自定义用户————————175 AUTH_USER_MODEL = ‘crm.UserProfile‘#使用自定的admin 表单176 # ————————34PerfectCRM实现CRM自定义用户————————177 178 179 180 # ————————44PerfectCRM实现账号快速注册登陆————————181 # send e-mail182 EMAIL_BACKEND = ‘django.core.mail.backends.smtp.EmailBackend‘ ?#email后端183 EMAIL_USE_TLS = False ??#是否使用TLS安全传输协议184 EMAIL_USE_SSL = True ???#是否使用SSL加密,qq企业邮箱要求使用185 EMAIL_HOST = ‘smtp.sina.cn‘ ??#发送邮件的邮箱 的 SMTP服务器 ??????#根据情况重新配置186 EMAIL_PORT = 465 ????????????????#发件箱的SMTP服务器端口 #一般不需要修改465187 EMAIL_HOST_USER = ‘perfectcrm@sina.cn‘ ???#发送邮件的邮箱账号 ????#根据情况重新配置 ?#perfectcrm@sina.cn ??pydjango@sina.cn188 EMAIL_HOST_PASSWORD = ‘admin123456‘ ????????#发送邮件的邮箱密码 ???#根据情况重新配置189 190 # ————————44PerfectCRM实现账号快速注册登陆————————191 192 193 # ————————46PerfectCRM实现登陆后页面才能访问————————194 LOGIN_URL = ‘/gbacc/gbacc_login/‘# login_url 配置 ?????#默认 /accounts/login/ ?#注意: / (绝对路径)195 # ————————46PerfectCRM实现登陆后页面才能访问————————196 197 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————198 ENROLLED_DATA=‘%s/bpm/static/enrolled_data‘%BASE_DIR#证件上传 # 上传路径199 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片————————200 201 # ————————61PerfectCRM实现CRM学生上传作业————————202 HOMEWORK_DATA=‘%s/bpm/static/homeworks‘%BASE_DIR ?#作业上传 # 上传路径203 # ————————61PerfectCRM实现CRM学生上传作业————————
# settings.py
 ?1 {#homework_detail.html#} ?2 {## ————————61PerfectCRM实现CRM学生上传作业————————#} ?3 {% extends ‘bpm_master/bpm_sample.html‘ %} ?4 {% load bpm_tags %} ?5 {% block right-container-content %} {#自定义内容开始 右边页面内容#} ?6 ????<div > ?7 ????????<div > ?8 ????????????<h4>当前用户: {{ request.user }} | 学员名字:{{ request.user.stu_account.name }} | ?9 ????????????????学员QQ:{{ request.user.stu_account }}</h4> 10 ????????????<div  style=" 11 ????????????????<ol > 12 ????????????????????<li><a href="/bpm/my_course/">我的课程</a></li> 13 ????????????????????<li><a href="/bpm/studyrecords/{{ enroll_obj.id }}/">{{ enroll_obj.enrolled_class }}</a></li> 14 ????????????????????<li><a href="#">第:{{ studyrecord_obj.course_record.day_num }}节</a></li> 15 ????????????????</ol> 16 ????????????</div> 17 ?18 ????????????<h4>作业标题:{{ studyrecord_obj.course_record.homework_title }}</h4> 19 ????????????<h4>作业详情: 20 ????????????????<pre>{{ studyrecord_obj.course_record.homework_content }}</pre> 21 ????????????</h4> 22 ????????????<h4>老师评语: 23 ????????????????<pre>{{ studyrecord_obj.memo }}</pre> 24 ????????????</h4> 25 ????????????<h4>本节成绩: {{ studyrecord_obj.score }} </h4> 26 ?27 ?28 ?29 ????????????<hr> 30 ????????????<h4>已经上传的文件: <a >刷新</a></h4> 31 ????????????<div > 32 ????????????????<div > 33 ????????????????????{% for file in file_lists %} 34 ????????????????????????<div > 35 ????????????????????????????{% for foo in file %} 36 ????????????????????????????????<a>{{ foo }}</a> ?| 37 ????????????????????????????{% endfor %} 38 ????????????????????????????<span >{{ file.0 }}</span> 39 ????????????????????????????<a >删除</a> 40 ????????????????????????</div> 41 ????????????????????????<br> 42 ????????????????????{% endfor %} 43 ????????????????</div> 44 ????????????</div> 45 ????????????<h4>请上传作业</h4> 46 ????????????<form action="{{ request.path }}" method="post"  enctype="multipart/form-data" 47 ??????????????????>{% csrf_token %} 48 ????????????????<input type="hidden" name="file_id" ng-model="file_id" /> 49 ????????????</form> 50 ????????</div> 51 ????</div> 52 {% endblock %} 53 ?54 ?55 ?56 {% block js %} 57 ????<script> 58 ????????//页面加载时绑定按钮点击事件 59 ????????$("#refresh").click(function(){ 60 ????????????window.location.reload();//刷新当前页面. 61 ????????}); 62 ?63 ????????$(‘.del_img‘).click(function () { 64 ????????????s = $(this); 65 ????????????texts = s.parent().children("span").text(); 66 ????????????{# ???????alert(texts);#} 67 ????????????$.ajax({ 68 ????????????????url: "{{ requset.path }}", 69 ????????????????type: "post", 70 ????????????????data: {"data": texts}, 71 ????????????????headers: {‘X-CSRFtoken‘: $.cookie(‘csrftoken‘)}, 72 ????????????????success: function (arg) { 73 ????????????????????if (arg) { 74 ????????????????????????alert(‘删除成功!‘); 75 ????????????????????????s.parent(‘div‘).addClass(‘hide‘); {# ?#添加样式#隐藏#} 76 ????????????????????} 77 ????????????????} 78 ????????????}) 79 ????????}); 80 ?81 ????????Dropzone.autoDiscover = false; 82 ????????appElement = document.querySelector(‘div .inmodal‘); 83 ????????myDropzone = new Dropzone("#dropz", { 84 ????????????url: "{{ request.path }}",//文件提交地址 85 ????????????method: "post", ?//也可用put 86 ????????????paramName: "file", //默认为file 87 ????????????maxFiles: 1,//一次性上传的文件数量上限 88 ????????????maxFilesize: 2, //文件大小,单位:MB 89 ????????????acceptedFiles: ".zip,.7z", //上传的类型 90 ????????????addRemoveLinks: true, 91 ????????????parallelUploads: 1,//一次上传的文件数量 92 ????????????//previewsContainer:"#preview",//上传图片的预览窗口 93 ????????????dictDefaultMessage: ‘请将作业压缩打包后上传‘, 94 ????????????dictMaxFilesExceeded: "您最多只能上传1个文件!", 95 ????????????dictResponseError: ‘文件上传失败!‘, 96 ????????????dictInvalidFileType: "文件类型只能是*.zip,*.7z。", 97 ????????????dictFallbackMessage: "浏览器不受支持", 98 ????????????dictFileTooBig: "文件过大上传文件最大支持.", 99 ????????????dictRemoveLinks: "删除",100 ????????????dictCancelUpload: "取消",101 ????????????init: function () {102 ????????????????this.on("addedfile", function (file) {103 ????????????????????//上传文件时触发的事件104 ????????????????????document.querySelector(‘div .dz-default‘).style.display = ‘none‘;105 ????????????????});106 ????????????????this.on("success", function (file, data) {107 ????????????????????//上传成功触发的事件108 ????????????????????console.log(‘ok‘);109 ????????????????????// angular.element(appElement).scope().file_id = data.data.id;110 ????????????????});111 112 ????????????????this.on("error", function (file, data) {113 ????????????????????//上传失败触发的事件114 ????????????????????console.log(‘fail‘);115 ????????????????????var message = ‘‘;116 ????????????????????//lavarel框架有一个表单验证,117 ????????????????????//对于ajax请求,JSON 响应会发送一个 422 HTTP 状态码,118 ????????????????????//对应file.accepted的值是false,在这里捕捉表单验证的错误提示119 ????????????????????if (file.accepted) {120 ????????????????????????$.each(data, function (key, val) {121 ????????????????????????????message = message + val[0] + ‘;‘;122 ????????????????????????});123 ????????????????????????//控制器层面的错误提示,file.accepted = true的时候;124 ????????????????????????alert(message);125 ????????????????????}126 ????????????????});127 ????????????????this.on("removedfile", function (file) {128 ????????????????????//删除文件时触发的方法129 ????????????????????//var file_id = angular.element(appElement).scope().file_id;130 ????????????????????{# ???????????????????if (file_id) {#}131 ????????????????????{# ???????????????????????$.post(‘/admin/del/‘ + file_id, {‘_method‘: ‘DELETE‘}, function (data) {#}132 ????????????????????{# ???????????????????????????console.log(‘删除结果:‘ + data.message);#}133 ????????????????????{# ???????????????????????})#}134 ????????????????????{# ???????????????????}#}135 ????????????????????// angular.element(appElement).scope().file_id = 0;136 ????????????????????document.querySelector(‘div .dz-default‘).style.display = ‘block‘;137 ????????????????});138 ????????????}139 ????????});140 ????</script>141 {% endblock %}142 {## ————————61PerfectCRM实现CRM学生上传作业————————#}
{#homework_detail.html#}
 1 {#studyrecords.html#} 2 {## ————————60PerfectCRM实现CRM学生上课记录————————#} 3 {% extends ‘bpm_master/bpm_sample.html‘ %} 4 {% load bpm_tags %} 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 6 ????<div > 7 ????????<div > 8 ????????????<h4>当前用户: {{ request.user }} | 学员名字:{{ request.user.stu_account.name }} | ?学员QQ:{{ request.user.stu_account }}</h4> 9 ????????????<ol >10 ????????????????<li><a href="/bpm/my_course/">我的课程</a></li>11 ????????????????<li><a href="/bpm/studyrecords/{{ enroll_obj.id }}/">{{ enroll_obj.enrolled_class }}</a></li>12 ????????????</ol>13 ????????????<table >14 ????????????????<thead>15 ????????????????<tr>16 ????????????????????<th>课程名称</th>17 ????????????????????<th>课程节次</th>18 ????????????????????<th>上课日期</th>19 ????????????????????<th>签到状态</th>20 ????????????????????<th>我的成绩</th>21 ????????????????????<th>是否有作业</th>22 ????????????????????<th>作业标题</th>23 ????????????????????{## ————————61PerfectCRM实现CRM学生上传作业————————#}24 ????????????????????<th>作业详情</th>25 ????????????????????{## ————————61PerfectCRM实现CRM学生上传作业————————#}26 ????????????????</tr>27 ????????????????</thead>28 ????????????????<tbody>29 ????????????????{% for studyrecord in enroll_obj.studyrecord_set.all %}30 ????????????????????<tr>31 ????????????????????????<td>{{ studyrecord.course_record }}</td>32 ????????????????????????<td>{{ studyrecord.course_record.day_num }}</td>33 ????????????????????????<td>{{ studyrecord.course_record.date }}</td>34 ????????????????????????<td>{{ studyrecord.get_attendance_display }}</td>35 ????????????????????????<td>{{ studyrecord.get_score_display }}</td>36 ????????????????????????<td>{{ studyrecord.course_record.has_homework }}</td>37 ????????????????????????<td>{{ studyrecord.course_record.homework_title }}</td>38 ????????????????????????{## ————————61PerfectCRM实现CRM学生上传作业————————#}39 ????????????????????????<td><a href="{% url ‘homework_detail‘ enroll_obj.id studyrecord.id %}">作业管理</a></td>40 ????????????????????????{## ————————61PerfectCRM实现CRM学生上传作业————————#}41 ????????????????????</tr>42 ????????????????{% endfor %}43 ????????????????</tbody>44 ????????????</table>45 ????????</div>46 ????</div>47 {% endblock %}48 {## ————————60PerfectCRM实现CRM学生上课记录————————#}
{#studyrecords.html#}
老师评语:作业做的很好,继续保持!!!加油!

本节作业标题: 八荣八耻

本节作业要求:写这个教程的初衷是为了整理一下自己的python技术,算是总结!



Django项目:CRM(客户关系管理系统)--71--61PerfectCRM实现CRM学生上传作业

原文地址:https://www.cnblogs.com/ujq3/p/8999149.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved