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

Posted 颜言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django项目:CRM(客户关系管理系统)--71--61PerfectCRM实现CRM学生上传作业相关的知识,希望对你有一定的参考价值。

 

 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\'^student_course/$\', student_views.student_course, name=\'student_course\'),   #学生报名的课程
 8     url(r\'^studyrecords/(\\d+)/$\', student_views.studyrecords, name=\'studyrecords\'),  # #学生上课记录列表StudyRecord
 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 from  django.contrib.auth.decorators import login_required # 登陆后页面才能访问
 6 #学生报名的课程
 7 @login_required # 登陆后页面才能访问
 8 def student_course(request):
 9     enrollmentlist=request.user.stu_account.enrollment_set.all()#根据账号表关联的ID获取06学员报名信息表
10     return  render(request, \'bpm_student/student_course.html\', locals())
11 
12 #学生上课记录列表
13 @login_required # 登陆后页面才能访问
14 def studyrecords(request,enroll_obj_id):
15     enroll_obj=models.Enrollment.objects.get(id=enroll_obj_id)#根据ID获取06学员报名信息表
16     studyrecordlist=enroll_obj.studyrecord_set.all()#根据06学员报名信息表的ID获取09学习纪录
17     return render(request,\'bpm_student/studyrecords.html\',locals())
18 
19 # ————————60PerfectCRM实现CRM学生上课记录————————
20 
21 # ————————61PerfectCRM实现CRM学生上传作业————————
22 from django.contrib.auth.decorators import login_required #登陆才能访问
23 from PerfectCRM import settings #静态配置文件  #作业上传 # 上传路径
24 import os,json,time #系统操作
25 from django.shortcuts import HttpResponse #页面返回
26 from django.shortcuts import redirect #页面返回
27 #作业详情
28 @login_required#登陆才能访问
29 def homework_detail(request,enroll_obj_id,studyrecord_id):
30     studyrecord_obj=models.StudyRecord.objects.get(id=studyrecord_id)#取学习记录 对象
31     enroll_obj=models.Enrollment.objects.get(id=enroll_obj_id)#取班级对象
32 
33     #               作业根目录    班级ID      上课记录ID               学习记录ID
34     homework_path="{base_dir}/{class_id}/{course_record_id}/{studyercord_id}/".format(
35         base_dir=settings.HOMEWORK_DATA, #静态配置文件
36         class_id=studyrecord_obj.student.enrolled_class_id,#09学习纪录#学生名字#所报班级ID号
37         course_record_id=studyrecord_obj.course_record_id,#09学习纪录#每节课上课纪录表
38         studyercord_id=studyrecord_obj.id##09学习纪录
39     )
40     print(\'homework_path路径:\',studyrecord_obj.student.enrolled_class_id,studyrecord_obj.course_record_id,studyrecord_obj.id)
41 
42     if os.path.exists(homework_path):#判断目录是否存在
43         file_lists = []  # 已经上传的文件列表
44         for file_name in os.listdir( homework_path ):
45             f_path = \'%s/%s\' % (homework_path, file_name)  # 文件名字
46             modify_time = time.strftime( "%Y-%m-%d %H:%M:%S", time.gmtime( os.stat( f_path ).st_mtime ) )  # 文件上传时间
47             file_lists.append( [file_name, os.stat( f_path ).st_size, modify_time] )  # 添加到文件列表#文件名字#文件大小文件上传时间
48 
49 
50     if request.method=="POST":#上传
51         ret=False
52         data=request.POST.get(\'data\') #ajax
53         if data:#如果有删除动作
54             del_f_path="%s/%s"%(homework_path,data)#文件路径
55             print(\'删除文件,路径:\',del_f_path)
56             os.remove(del_f_path) #删除
57             ret=True
58             return HttpResponse(json.dumps(ret))#ret=False
59         if request.is_ajax():  # ajax上传图片 #异步提交
60             print("POST",request.POST)
61             if not os.path.isdir( homework_path ):  # 没有目录 #isdir返回true,如果路径名是指现有的目录。
62                 os.makedirs( homework_path, exist_ok=True )  # 创建目录  
63             for k,v in request.FILES.items():#上传的文件
64                 with open(\'%s/%s\'%(homework_path,v.name),\'wb\') as f:#chunk 写入文件
65                     for chunk in v.chunks(): #循环写文件
66                         f.write(chunk)
67             return HttpResponse( json.dumps( {"status": 0, \'mag\': "上传完成!", \'file_lists\': file_lists} ) )  # 上传文件返回
68 
69     if request.method=="POST":#上传
70         link = request.POST.get( \'link\' )  # 让页面POST提交的值,在页面GET后仍然存在显示
71         if link:
72             homework_link=models.StudyRecord.objects.filter( id=studyrecord_id ).update(homework_link=link)
73             return redirect(\'/bpm/homework_detail/%s/%s/\' %(enroll_obj_id,studyrecord_id) )#跳转到enrollment_rejection
74     return render(request,\'bpm_student/homework_detail.html\',locals())
75 # ————————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 # Database
109 # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
110 
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 validation
120 # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
121 
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 # Internationalization
139 # 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 = True
151 
152 USE_L10N = True
153 
154 USE_TZ = True
155 
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-mail
182 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服务器端口 #一般不需要修改465
187 EMAIL_HOST_USER = \'perfectcrm@sina.cn\'    #发送邮件的邮箱账号     #根据情况重新配置  #perfectcrm@sina.cn   pydjango@sina.cn
188 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 
202 # ————————61PerfectCRM实现CRM学生上传作业————————
203 HOMEWORK_DATA=\'%s/bpm/static/homeworks\'%BASE_DIR  #作业上传 # 上传路径
204 # ————————61PerfectCRM实现CRM学生上传作业————————
# settings.py

 

 

 

 

  1 #models.py
  2 
  3 # ————————01PerfectCRM基本配置ADMIN————————
  4 
  5 from django.db import models
  6 # Create your models here.
  7 
  8 """
  9 #运行 Terminal
 10 #    生成 数据表
 11 #    python manage.py makemigrations
 12 #   数据表 迁移
 13 #    python manage.py migrate
 14 """
 15 
 16 """01校区表"""
 17 class Branch(models.Model):
 18     name = models.CharField(max_length=128,unique=True) #校区名#CharField作用是保存文本,定长的变量类型
 19     addr = models.CharField(max_length=128) #地址
 20     def __str__(self):#__str__()是Python的一个“魔幻”方法,这个方法定义

以上是关于Django项目:CRM(客户关系管理系统)--71--61PerfectCRM实现CRM学生上传作业的主要内容,如果未能解决你的问题,请参考以下文章

Django项目:CRM(客户关系管理系统)--66--56PerfectCRM实现CRM客户报名缴费链接

Django项目:CRM(客户关系管理系统)--65--55PerfectCRM实现CRM客户报名状态颜色变化

Django项目:CRM(客户关系管理系统)--45--36PerfectCRM实现CRM用户登陆注销02

Django项目:CRM(客户关系管理系统)--66--56PerfectCRM实现CRM客户首列进入更改页优化路径

Django CRM学员系统项目

Django项目:CRM(客户关系管理系统)--40--32PerfectCRM实现King_admin添加不进行限制