django线上教育平台开发记录Justbreaking

1)、首先通过django-admin新建一个项目,(例如项目名为mxonline)

django-adminstartprojectmxonline运行后会出现一个mxonline的文件夹,这就是整个项目的文件夹,文件夹下的文件结构为:

2)、进入到mxonline下的settings.py文件配置数据库,我自己是这样配置的

DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':"mxonline",'USER':'root','PASSWORD':'147896321','HOST':'localhost','PORT':'3306',}}

然后通过migrate命令在数据库中会生成初始的数据表

pythonmanage.pymakemigrationspythonmanage.pymigrate注意:如果makemigrations出错,一般都是数据库配置错误,请仔细检查

3、第一个django页面

运行django

4、app的model设计

1)新建一个叫users的app,新建完成后,会出现一个和mxonline同级的users文件夹,这就是我们的users的app

pythonmanage.pystartappusers2)设计user的model(users/model.py)

#-*-coding:utf-8-*-fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractUserfromdjango.utils.encodingimportpython_2_unicode_compatiblepython_2_unicode_compatibleclassUserProfile(AbstractUser):nickname=models.CharField(max_length=16,verbose_name=u'昵称',default="")birday=models.DateField(verbose_name=u'生日',null=True,blank=True)gender=models.CharField(choices=((‘male’,u'男'),('female',u'女')),default="female")address=models.CharField(max_length=64,default="")mobile=models.CharField(max_length=11,null=True,blank=True)image=mdoels.ImageField(upload_to="image/%Y/%m",default=u'image/default.png',max_length=64)class=Meta:verbose_name="用户信息"verbose_name_plural=verbose_namedef__str__(self):returnself.username#othermodels...3)注册app,并设置AUTH_USER_MODEL

在settings.py中的INSTALLED_APP中添加users

INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','users',]AUTH_USER_MODEL="users.UserProfile"4)因为models中用到了ImageField,需要安装pillow

进入虚拟环境,安装pillow

pipinstallpillow5)同步user表到数据库

pythonmanage.pymakemigrationspythonmanage.pymigrate5、如何将多个app放到一个文件夹apps(apps所在位置为项目根目录)下:

在settings.py文件中,insertapps路径即可

首先

importsys然后在BASE_DIR后面添加apps

sys.path.insert(0,os.path.join(BASE_DIR,'apps'))6、创建后台admin的用户

1)settings.py修改

pipinstallxadmin修改settings.py中的配置

将xadmin和crispy_forms(注意这里的-改为_)加入到INSTALLED_APPS中

2)项目urls.py的修改

#fromdjango.contribimportadminimportxadminurlpatterns=[#url(r'^admin/',admin.site.urls),url(r'^xadmin/',xadmin.site.urls),]9、手动安装xadmin

1)、下载xadmin源码,xadmin的源码是保存在github上的,在github首页进行搜索,然后下载到本地

2)、新建extra_apps(第三方app)文件夹(与apps文件夹同级),并在该文件夹下新建__init__.py文件(标识为一个可被调用的包)

然后打开xadmin的源码,将里面的xadmin目录复制到extra_apps文件夹下

3)、最后在settings.py文件中将extra_apps添加到项目路径

sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))注意:本人在手动安装后运行项目时,出现了下面的错误

然后复制到项目对应虚拟环境的目录下

我自己对应的目录为:C:\Users\Administrator\Envs\mxonline\Lib\site-packages\

再次运行项目,又出现ImportError:Nomodulenamedsix的错误,然后可以通过pipinstallsix的方式解决

pythonmanage.pymakemigrationspythonmanage.pymigrate项目终于成功启动!!!

fromdjango.contrib.auth.backendsimportModelBackendfromdjango.db.modelsimportQfrom.modelsimportUserProfileclassCustomBackend(ModelBackend):defauthenticate(self,username=None,password=None,**kwargs):try:user=UserProfile.objects.get(Q(username=username)|Q(email=username))ifuser.check_password(password):returnuserexceptExceptionase:returnNone然后在settings.py中添加:

AUTHENTICATION_BACKENDS=('users.views.CustomBackend',)

11、Django验证码django-simple-captcha的使用

1)、安装和配置

通过pipinstall快捷安装

pipinstalldjango-simple-captcha将captcha添加到settings.py文件中的INSTALLED_APPS中

同步响应的配置到数据库中(同步后数据库会新建一个名为captcha_captchastore的数据表)

pythonmanage.pymigrate最后在项目的urls.py文件中添加:

urlpatterns+=patterns('',url(r'^captcha/',include('captcha.urls')),)2)、添加到表单并在视图函数或试图类验证

添加到表单

classRegisterForm(forms.Form):password=forms.CharField(required=True,min_length=6)email=forms.EmailField()captcha=captcha=CaptchaField(error_messages={"invalid":u"验证码错误"})模板中添加以显示出验证码

{{register_form.captcha}}

验证:

classRegisterView(View):defget(self,request):register_form=RegisterForm()returnrender(request,'register.html',{'register_form':register_form})defpost(self,request):register_form=RegisterForm(request.POST)ifregister_form.is_valid():...

1)、首先配置settings.py

email_send.py

send_email_verification_code(username,'register')returnrender(request,'login.html')else:returnrender(request,'register.html',{'register_form':register_form})4)、可以看到我们发送给新用户的访问链接中是通过active/加上一个16位的随机码来访问的,所以需要在urls.py和views.py中添加相应的激活处理

urls.py

urlpatterns+=url(r'^active/(P[a-zA-Z0-9]{16})/$',ActiveUserView.as_view(),name='active_user')views.py

classActiveUserView(View):defget(self,request,active_code):all_record=EmailVerfyRecord.objects.filter(code=active_code)forrecordinall_record:email=record.emailuser=UserProfile.objects.get(email=email)user.is_active=Trueuser.save()returnrender(request,'login.html')13、模板继承:

注意:模板继承中的static标签,即使父模板中load了一次,子模板中还是要load

子模板中记得要重新加载static标签{%loadstaticfiles%}

例如某个model配置了image这个字段,用于设置用户头像,是这么定义的:

image=models.ImageField(upload_to='org/%Y%m',verbose_name=u'logo')upload_to指明了上传的路径,然后还需要在settings.py文件中,TEMPLATES添加media的配置,并设置MEDIA_URL和MEDIA_ROOT

TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[os.path.join(BASE_DIR,"templates")],'APP_DIRS':True,'OPTIONS':{'context_processors':['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages','django.core.context_processors.media',],},},]...MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,'media')最后在项目的urls.py文件中做如下设置

fromorganization.viewsimportOrgViewfrommxonline.settingsimportMEDIA_ROOTurlpatterns+=url(r'^media/(P.*)$',serve,{"document_root":MEDIA_ROOT})完成!

15、jQuery提示parsererror错误的解决办法

原因:从服务端返回的json不合法,比如这样的形式,{'name':'xxxx'}。必须是双引号,{"name":"xxxx"}

这是后端返回给页面的部分代码:json文本部分使用了单引号!

classAddUserAskView(View):defpost(relf,request):userask_form=UserAskForm(request.POST)ifuserask_form.is_valid():user_ask=userask_form.save(commit=True)#UserAskForm为一个ModelForm类,相较于Form类,它可以直接提交表单数据到数据库returnHttpResponse(“{‘status’:'success'}”,content_type='application/json')else:return...ajax代码如下

结果success函数一直不执行,最后添加了error函数后,提示parseerror的异常

最后发现问题,HttpResponse()中的json文本,一定要用双引号

returnHttpResponse('{"status":"success"}',content_type='application/json')

16、404页面配置

1、设置settings.py文件中DEBUG为false

DEBUG=False2、将DEBUG模式为True的时候,django可以根据设置的STATICFILES_DIRS取到的静态文件,当设置为false后,这种访问静态文件的方式将会失效(网站部署的时候,静态文件都是通过第三方【apache、nginx等】来代理的。),为了能正常访问静态文件,可以通过配置static的访问配置url和访问函数。

1)首先在settings.py文件中,配置STATIC_ROOT

STATIC_ROOT=os.path.join(BASE_DIR,'static')2)在项目文件的urls.py文件中,添加static的urls配置

frommxonline.settingsimportSTATIC_ROOTurl(r'^static/(P.*)$',serve,{"document_root":STATIC_ROOT}),3)在views.py文件中添加404页面的处理函数

#全局404处理函数defpage_not_found(request):response=render_to_response('404.html',{})response.status_code=404returnresponse4)最后在配置url的urls.py文件中添加404页面的全局配置

handler404='users.views.page_not_found'

17、xadmin使用的图标来自第三方库awesome

18、xadmin中使用ueditor(DjangoEditor源码使用文档)

1、安装

pipinstallDjangoUeditor2、在settings.py文件中,添加DjangoUeditor到INSTALL_APPS里面

3、urls.py文件中配置url

url(r'^ueditor/',include('DjangoUeditor.urls')),4、models.py中使用,并在xadmin注册的将其添加到style_fields

models.py

fromDjangoUeditor.modelsimportUEditorFieldclassBlog(models.Model):Name=models.CharField(,max_length=100,blank=True)detail=UEditorField(u'内容',width=600,height=300,toolbars="full",imagePath="",filePath="",upload_settings={"imageMaxSize":1204000},settings={},command=None,event_handler=myEventHander(),blank=True)adminx.py

classCourseAdmin(object):...#指定在编辑状态不显示的字段exclude=['fav_nums']#添加课程时,可以直接添加章节,Lesson和CourseResource均有外键指向Courseinlines=[LessonInline,CourseResourceInline]style_fields={'detail':'ueditor'}

5、xadmin下的plugins文件夹中添加ueditor.py文件,然后在__init__.py中的PLUGINS里面添加'ueditor'

ueditor.py文件内容为:

PLUGINS=(...'sortablelist','ueditor',)6、最后需要在展示富文本的地方关掉自动转义

{%autoescapeoff%}{{course.detail}}{%endautoescape%}

19、xadmin插件开发之excel导入

1、xadmin/plugins中新建excel.py文件

excel.py

#-*-coding:utf-8-*-importxadminfromxadmin.viewsimportBaseAdminPlugin,ListAdminViewfromdjango.templateimportloader#excel导入功能classListImportExcelPlugin(BaseAdminPlugin):import_excel=Falsedefinit_request(self,*args,**kwargs):returnbool(self.import_excel)#返回True才会加载插件defblock_top_toolbar(self,context,nodes):#显示自己的htmlnodes.append(loader.render_to_string('xadmin/excel/model_list.top_toolbar.import.html',context_instance=context))xadmin.site.register_plugin(ListImportExcelPlugin,ListAdminView)2、配置对应的html模板文件

在xadmin/templates下新建excel文件夹,然后新建一个html文件,命名为

model_list.top_toolbar.import.html,

PLUGINS=(...'ueditor','excel',)4、在adminx.py文件中对应model注册的时候,设置import_excel并重写post()方法以将上传的excel文件解析,最后保存到数据库对应的表中

这是我的xadmin.py文件中添加了了导入功能的Course的处理

xlrd第三方库可以通过pipinstallxlrd来安装

20、csrf_token在html和js中写法不一样

1、js中当做模板变量应该用{{csrf_token}}

functionadd_fav(current_elem,fav_id,fav_type){$.ajax({cache:false,type:"POST",url:"{%url'org:add_fav'%}",data:{'fav_id':fav_id,'fav_type':fav_type},async:true,beforeSend:function(xhr,settings){xhr.setRequestHeader("X-CSRFToken","{{csrf_token}}");},success:function(data){...},});}$('#jsLeftBtn').on('click',function(){add_fav($(this),{{course.id}},1);});$('#jsRightBtn').on('click',function(){add_fav($(this),{{course.course_org.id}},2);});

THE END
1.在线教育网站模板/开发一个app需要多少钱?在线教育网站模板,开发一个app需要多少钱?,商丘加盟小吃网站,做网站可以申请国家补助吗Neptune Linux开发人员Leszek Lesner宣布发布Neptune 5.4,这是基于Debian和KDE的操作系统的月度更新安装映像,该操作系统使用最新的软件版本和技术。改进了对Android设备的支持,支持从通知小部件中删除所有通知历史记录,支持Plasm… http://www.llbn.cn/news/208171.html
2.杏坛歌者在教育教学工作中,我总是从“爱”字出发,“严 ”字当头,“细”字入手,经常深入班级了解学生,搞好语文课堂教学和学生课外辅导,做到因材施教,注重学生个性发展,培养学生的素质技能。在我的心目中,爱学生胜过爱自己的孩子。不管是优生还是差生,我总会以睿智的眼光和热情的话语,去激发和捕捉每一个学生身上的“闪光点https://www.meipian.cn/1z5erygi
3.开发在线教育系统多少钱一个月网站的源代码是网站的基石,很多人在创建自己的在线教育平台时,多数都会借鉴别人的代码然后修改来开发,所以,怎么看一个网站的原始代码?就是接下来的内容里会更大家分析到的信息,不会的朋友可以收藏。 一、看网站源代码的方法 1、先用浏览器打开你要看的网页。 https://blog.csdn.net/tu_course_zi/article/details/135420900
4.海词词典在线词典在线翻译海词词典是中国第一个在线词典,海量权威词典官方网站。独有2000万词汇,配释义饼图、精细讲解、优质例句,专业提供60个行业11个语种的在线词典和在线翻译服务。http://dict.cn/
5.听话猫·中国直销教育培训透视报告报告未尽之处,欢迎指导斧正,我们也会陆续修订完善,希望这次尝试是一个良好的开端,我们以后每年都将研究发布一份更高质量的中国直销行业教育培训的发展报告,再接再厉,继续探寻未来中国直销教育培训路在何方。 01 高端从业者的调查结果 1、当下直销从业者接触行业,更多受哪个培训体系影响? https://www.cqcb.com/dyh/live/dyh2581/2018-12-12/1303085_pc.html
6.www.maxcent.cn/mmmj20175866黑色中文字幕网站 免费遮挡禁18网站视频 56.11MB 7383好评 黄片儿李沁 中文无码高清六区 鬼电影在线观看国语 03.71MB 8037好评 色网3p一区蜜臀色欲av 三个人?一个B电影 深夜院场女人的鸡巴 09.08MB 8128好评 日韩另类图片在线电影免费观看 什么骚逼最爽 明星ai智能人脸替换脸忘忧草 150.95MBhttp://www.maxcent.cn/mmmj20175866
7.厦门在线教育网站平台开发多少钱解决方案最近厦门开始有部分客户开始对在线教育网站平台开发开始产生的兴趣,大家都是在咨询开发需要多少钱的,都知道2018年的生意很多公司都不好做,但是有一个行业确是新型起航中,这就是在线教育,如果在厦门找一家在线教育网站平台开发需要多少钱、都能做些什么东东呢?在线教育开始火了起来,可不是在厦门开始的早在2015年在https://www.topzhong.com/466.html
8.4500+资源免费对接:乘风破浪的姐姐直播招商滴滴寻品牌实物3:微信公众号、网站也可付费购买广告位 我提供:海量优质医生继续教育课程,提供脊柱、关节、创伤、运动,保膝等五个方面手术视频,优质课程,为医生的继续学习和发展提供全方位服务与帮助! 10、【丽格荟】求万代,乐高的供货资源: 我需要:厂家 我提供:卖货 https://www.niaogebiji.com/article-27383-1.html
9.学习UI设计的ui培训杭州大概多少钱 杭州ui设计哪个比较好 杭州哪里学UI 师兄师姐们的实力 您值得拥有 杭州学UI设计首选天琥教育 学习更深一层,职业发展起点更高 天琥UI课程研发团队调研发现,当前同类培训课程 几乎都设置了4个月的学习内容,为满足企业用人需求我们的团队把课程 研发更深入,让您学完本课程就业起薪更高https://www.thea.cn/px461_hz_12625071.htm
10.考生问答答:大连科技学院位于辽东半岛最南端的大连旅顺经济开发区大学城内,其前身是2002年组建的大连交通大学(原大连铁道学院)信息工程学院,2011年经教育部批准转设为省属普通本科高校,2016年获批为辽宁省向应用型转型发展试点高校,2019年顺利通过教育部本科教学工作合格评估。 学校办学条件逐步完善,校园占地面积74.66万㎡,教学科https://sub2.dlust.edu.cn/kjzs/channel-101.html
11.前端设计培训学校需要多少钱?哪家好一款软件、一个网站的开发和搭建,需要有前端设计开发和后端程序技术开发两大类岗位的人才配合完成,前端设计开发又分为UI设计(包括UI图标设计、UE交互设计)、web前端设计两种岗位。那么前端设计培训学校需要多少钱?哪家好? 市面上的培训机构很多,但是课程大都是分别针对UI设计、web前端开发进行设置的。所以同学们应该先https://www.hxsd.com/content/7522/
12.红色教育主题班会9篇(全文)通过组织这次爱国主义教育主题班会,帮助学生了解祖国的过去,认识祖国的现在,展望祖国的未来,激发民族自豪感。活动内容: 1、宣布班会开始。 2、祖国知识知多少竞赛。 3、文艺表演。 4、班主任老师小结,齐唱国歌。活动形式: 汇报、表演、竞赛。活动过程: 一、主持人宣布班会开始 https://www.99xueshu.com/w/fileabakqg2f.html
13.Apple(中国大陆)探索Apple 的创新世界,选购各式 iPhone、iPad、Apple Watch 和 Mac,浏览各类配件、娱乐产品,并获得相关产品的专家服务支持。https://www.apple.com.cn/
14.右脑开发右脑开发加盟右脑开发加盟费多少钱右脑开发右脑开发_右脑开发加盟_右脑开发加盟费多少钱,右脑开发旗下右脑开发5 钟记忆100个无规律数字、词语、英文字母· 5分钟记一副无序扑克牌 · 2天记一本《弟子规》 ·!http://younaokaifa.xiangmu.com/
15.开展第十八届“5·15政务公开日”专题在线访谈——介绍惠企5月15日是沈阳市第十八届“5·15政务公开日”,沈阳市政务公开工作办公室与沈阳日报、沈阳发布客户端联办的民生连线特别节目举行,来自全市16家单位21个部门有关人士走进沈阳日报社5G直播间,围绕着沈阳市近期出台的惠企利民政策,采用在线访谈、互动问答的方式,积极回应社会关切,加大了政策公开力度,让企业、群众知晓政策https://www.shenyang.gov.cn/zwgk/zwdt/bxgz/202405/t20240515_4643895.html
16.需求分析报告(通用12篇)是的,人工作是为了活着,或是为了养家糊口,或是为了十几年的教育能够学有所用,或是为了实现自己的社会价值,但所有的所有的目的,都是在自身安全的前提下实现的。 由于我的生性胆小,所以第一次接触这种立体式庞杂的施工现场时,我是以一个初入者的身段带着强大的融入式需求来接受目前这份工作的,虽然在繁杂立体式https://www.ruiwen.com/word/xuqiufenxibaogao.html