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.线上平台素材线上平台图片线上平台素材图片下载觅知网为您找到181个原创线上平台素材图片,包括线上平台图片,线上平台素材,线上平台海报,线上平台背景,线上平台模板源文件下载服务,包含PSD、PNG、JPG、AI、CDR等格式素材,更多关于线上平台素材、图片、海报、背景、插画、配图、矢量、UI、PS、免抠,模板、艺术字、Phttps://www.51miz.com/so-sucai/1610405.html
2.数字化营销新篇章,微平台的五大优势网站搭建微平台助力企业开启数字化营销新篇章,其优势在于便捷高效、互动性强,成本低廉,助力品牌精准触达目标用户,提高率。实现线上线下融合,助力企业实现全渠道营销。 传播迅速,覆盖广泛 如上图所示,微平台网站以其简洁直观、易于传播的特性深受用户喜爱,借助、微博等社交平台,微平台网站能迅速触达用户群体,实现品牌的快速传播http://www.fengzhengtop.com/wzdj/453096.html
3.线上支付平台图片线上支付平台高清设计图片素材大全摄图网汇聚线上支付平台图片大全:线上支付平台设计素材、线上支付平台素材、线上支付平台高清图片、线上支付平台背景图片等。你可以找线上支付平台设计灵感、摄影创意,我们欢迎您下载线上支付平台vrf正版授权图片,商用无压力https://m.699pic.com/image/xianshangzhifupingtai.html
4.线上平台专题模板线上平台图片素材下载我图网线上平台专题为您整理了17310个原创高质量线上平台图片素材供您在线下载,PSD/JPG/PNG格式线上平台模板下载、高清线上平台图片大全等,下载图片素材就上我图网。https://so.ooopic.com/search-cfdfc9cfc6bdcca8-0-0_0__0_0_0_ooo_0_3_0_0_0_0_0_0_0___0__.html
5.[线上平台宣传]图片免费下载线上平台宣传素材千图网为您找到108张线上平台宣传相关素材,千图网还提供线上平台宣传图片,线上平台宣传素材, 线上平台宣传模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://m.58pic.com/tupian/xianshangpingtaixuanchuan.html
6.8个国内外摄影投稿平台/网站推荐(附投稿方式+要求)现在越来越多的人喜欢摄影了,而且很多人的摄影作品质量都非常高,跟很多摄影师的比起来也毫不逊色。如果你对你自己的摄影作品比较满意,不妨投稿到相关平台赚取一定的收益。那么拍摄的照片怎么投稿挣钱?摄影作品可以去哪里投稿?有哪些摄影照片投稿的平台或公众号?个人拍https://www.extrabux.cn/chs/guide/7908359
7.如何更好的运营酒店线上平台,深入了解OTA运营在当今时代,酒店与我们的生活息息相关!无论是出差或是旅行都离不开住酒店,越来越多人的选择通过OTA平台预订酒店。 在现在这个时代背景下,我们不得不承认:酒店OTA运营,已成为绝大多数酒店最合适的方式。那么如何在激烈的竞争中脱颖而出,如何更好的运营自己的线上平台,带你深入了解OTA运营。 https://www.jiudianrong.com/newsdetail/id/12062.html
8.微信投票制作软件网站状元评选是免费在线微信投票设计制作第三方投票系统管理平台,视频投票, 图片投票等操作简单,管理方便,多级防作弊,高效吸粉,快速发起多选、单选投票业务,支持视频、图片多种类型不同形式投票设计。团队在投票创建、投票制作领域已经长达多年的研发经验,获得了广大用户的认http://www.vanviapro.com/
9.2.0版英才卡“科技城人才”线上平台来了图片视觉绵阳马睿 李桥臻 供图 基本信息 图片编号:2095 最大尺寸:4033 × 3024 px 原图:3.31 MB JPG ≈ 34.89 MB TIFF 授权模式:RM版权管理类图片 肖像权/物权:无 查看授权信息 更多相似图 RMID:2093 RMID:2097 RMID:2103 RMID:2094 RMID:2096 RMID:2098 https://sjmy.mianyang.cn/detail/60ee6a36b0ed2d1c4854e6e2
10.线上线下如何辨别房源真假?看了就知道!一、线上 1、图片优雅却很模糊夸张 了解过二手房网上交易平台的都知道,房源信息的发布是图文的结合,对购房者来说,房源的图片信息直接决定了对房子的印象,再配合价格,可能就决定了要不要看房,买房的意愿。但是图片也有做假的。 卖家提供看起来明亮华丽的图片来刺激购房者,几十平米的房子看起来像是上百平,这样的房https://zhishi.fang.com/xf/qg_334572.html
11.线上一单一结的兼职平台有哪些?分享几个靠谱的线上兼职一单一结平台如果你是线上兼职小白,想安心找网上兼职,又不想被网上兼职割韭菜,真正在网上兼职,一单一结赚到钱,。请耐心看完这篇文章。 大学生在学校无聊,宝妈带娃有闲、职员下班无事,想找一些在家能做的兼职,又想来钱快,又担心被骗,又不想交押金、保证金就能赚到钱。该走哪些合法正规的兼职渠道呢? https://www.jianshu.com/p/4a0ced2ccde1
12.饿了么平台充斥两证不全或过期商家默许商家通过暗号违规卖香烟线上图片与实体店不符 网络送餐已成为时代宠儿。饿了么在其商家注册页面上用黄色大号字体标明,极速开店24小时,优质商家130万,全国覆盖2000城市,累计用户2.6亿。这样一个体量,让不少消费者对其信任有加。 然而,在武汉东湖路附近工作的侯先生因经常加班,常点一家名为“梁小猴铁板炒饭”店铺。饿了么平台显示,该店为https://dy.163.com/v2/article/detail/DIB46HH10530KCTU.html
13.毕业设计课题:线上教学平台,基于java+SSM+mysql线上教学平台,通过系统可以获取首页、学习资料、交流论坛、试卷列表、公告信息、留言反馈、个人中心、后台管理等信息操作内容。 4.2.3、学习资料 学习资料,通过内容列表可以获取资料名称、资料类型、图片、资料文件、教学视频、发布时间等信息可进行点我收藏操作。 4.2.4、交流论坛 交流论坛,通过内容列表可以获取标题、类https://blog.csdn.net/qq_15930935/article/details/137219089
14.相片纸是什么纸尺寸是多少如何选择3、线上打印平台打印 在线上选择好尺寸、工艺和相纸类型时下单即可。 相片纸如何打印证件照 1、在打印前需要先了解自己准备打印的照片纸的尺寸,然后在word里点击布局纸质大小选择准备打印的纸张大小,打印证件照的照片纸尺寸可以是4×6英寸的,页面设置也选择4×6英寸。 https://www.cnpp.cn/focus/38527.html
15.科通科通技术官方网站热点推荐 Recommendations 关于科通 代理产品 新闻中心 应用案例 20+ 值得信赖的伙伴 科通本着创新驱动的精神,20多年保持稳定 发展与业务增长,是值得您信赖的电子元器件分销商 及增值服务供应商 100+ 优秀完备的供应商 科通与全球领先的100多家半导体供应商 https://www.cogobuy.com/
16.www.tibox.cn/xxxr31615257澳门线上平台app下载 爱播影院爱爱视频免费观看 375.60MB 270好评 乌克兰BBWBBwBBWBB 人兽一区二区三区亚洲 色综网 47.92MB 150好评 玩美丽的阿?交换 国产村长AV一区二区 灌肠啊哈好深木马屁眼失禁 80.54MB 7335好评 人妻Av一区二区蜜桃 万达平台 麻7IIII2扣信任 上仓镇那里有小妹 347http://www.tibox.cn/xxxr31615257
17.点击右侧图片可进入相应系统操作平台与创业为伴,点亮创新,为智能零售从业者而生的设备及平台方案解决商 帮您实现躺着赚钱的梦想 你想要的智能设备,我们能以业界高水准为你提供。 运营优势 OUR ADVANTAGE 我们不止是设备销售厂家,更为您量身定制智能零售运营模式,运营更有优势。 监控跟踪杜绝丢货 http://www.foryou.xin/
18.浙江省高等学校在线开放课程共享平台浙江省高等学校在线开放课程共享平台通过“跨界·融合·创新”的模式实现浙江省高等教育的大协同,为高校师生和社会学习者提供优质高效的全方位或个性化服务,是具有浙江特色的云大学平台。https://www.zjooc.cn/
19.国家智慧教育公共服务平台帮助中心 无障碍浏览 登录 1 2 3 4 5 更多专题 国家中小学智慧教育平台 德育 课程教学 体育 美育 劳动教育 课后服务 特殊教育 教师研修 家庭教育 教改经验 教材 国家职业教育智慧教育平台 德育 课程教学 体育 美育 劳动教育 虚拟仿真实训 教师能力提升 https://www.smartedu.cn/
20.国家税务总局12366纳税服务平台北京市[切换] 我的收藏 好友申请 我的消息 注册登录 大家都在搜:发票小微企业三证合一增值税 热点问题最新法规 视频点播开业第一课 智能咨询网上留言 办税地图办税日历 文字访谈https://12366.chinatax.gov.cn/
21.年轻一代消费者入场,二手腕表市场焕发巨大活力根据购买手表的不同渠道/平台统计,年轻一代更倾向于线上平台(截图) 图片来源:The Deloitte Swiss Watch Industry Study 2022 “我们的受众与想象中的传统手表买家截然不同,”知名腕表资讯网站及在线交易平台Hodinkee的创始人Ben Clymer在德勤最新报告中提到,“他们要年轻得多,买卖手表的频率要高得多,而且他们更关心二手https://www.cls.cn/detail/1203550