Django+xadmin打造线上教育平台知识点拾遗(三)Ericnan

1)在一开始设计表类型结构时,有部分表字段定义的是文件或图片类型,会有一个上传路径,如:

上传路径upload_to:org/%Y/%m是个相对路径,意思是上传到后台的图片/文件,放到org文件夹/Y(年份)文件夹/m文件夹下,但绝对路径没给,不知道具体放的实际位置是哪,

这个时候需要在django中配置静态文件的处理方式,在setting中配置:上传的文件会自动存放到到/media/org/Y/m中

#settings.py#设置上传文件的路径MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,'media')#指定根目录

2)关于文件/图片从xadmin上传到django项目中指定的文件夹的问题已经解决,接下来说在HTML模板中使用这些文件/图片,一般有两种方式

用第二种方式需要配置:

1)setting配置:上述已说明,配置上传文件路径

2)setting中TEMPLATES下的OPTIONS要加入这一句:用于识别前端模板MEDIA_URL路径,直接转换成:/media/,实现{{MEDIA_URL}}{{course_org.image}}→/media/org/2018/8/***.png的转换

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.template.context_processors.media',#新增,用于media处理],},},]

3)url.py的配置:配置静态文件,是因为前端根据(2)中转换成的/media/org/2018/8/***.png路径,到url中serve配置好的路径找对应MEDIA_ROOT(根路径)下的media文件夹,即找到media/org/2018/8/***.png,然后显示到页面

fromdjango.urlsimportpath,include,re_pathfromdjango.views.staticimportserve#用于处理静态文件fromMxOnline.settingsimportMEDIA_ROOT#media路径urlpatterns=[#处理静态文件,使用Django自带serve,传入setting中路径配置MEDIAROOT,让它根据路径找re_path(r'^media/(P.*)',serve,{"document_root":MEDIA_ROOT}),]

一般推荐第二种,方便维护

views.py:

fromdjango.shortcutsimportrender,redirectfromorganizationimportmodelsfromdjango.core.paginatorimportPaginator,PageNotAnInteger,EmptyPage#Createyourviewshere.deforg_list(request):"""课程机构列表"""#所有课程机构all_orgs=models.CourseOrg.objects.all()orgs_count=all_orgs.count()#所有城市all_citys=models.CityDict.objects.all()#开始分页功能paginator=Paginator(all_orgs,5)page=request.GET.get('_page',1)try:orgs=paginator.page(page)#当前页显示的5个数据print(orgs)exceptPageNotAnInteger:#Ifpageisnotaninteger,deliverfirstpage.orgs=paginator.page(1)exceptEmptyPage:#Ifpageisoutofrange(e.g.9999),deliverlastpageofresults.orgs=paginator.page(paginator.num_pages)#paginator.num_pages:总页数,即返回最后一页returnrender(request,'organization/org-list.html',locals())ViewCode

app内新建templatetags包,在里面新建online_tag.py文件,用于自定义标签,返给HTML模板渲染:

HTML界面只需要一个导入跟一句代码便能实现分页功能:

{%loadmxonline_tags%}{#分页#}{%render_paginatororgs%}

1.1、创建Form类

1.2、views.py函数处理:

1.3、HTML页面:

Title{%csrf_token%}

{{obj.user}}{{obj.user.errors.0}}

{{obj.pwd}}{{obj.pwd.errors.0}}

{{obj.email}}{{obj.email.errors.0}}

{{obj.city}}{{obj.city.errors.0}}

{{obj.gender}}{{obj.gender.errors.0}}

{{obj.abc}}{{obj.abc.errors.0}}

ViewCode

1.4、自定义验证:

1)clean_%s(self)#clean_+要审查的那个字段

这种是验证单个字段的:

2)c.clean(self)#重写clean方法

这种可以验证多个字段:

demo:

2.1、创建ModelForm类:

ModelForm的自定义验证方法跟Form的自定义验证方法是一样的,内置字段名也基本一致,可以参考Form类的介绍,如:

数据以字典形式存于cleaned_data中,错误以字典形式存于errors中

ModelForm与Form的不同点:

ModelForm:字段不需要自己写,与model中定义的数据表相通、一致;验证数据通过后可以通过.save()直接保存

From:字段需要自己手动添加,只验证字段是否合法,数据保存之类需要手动保存

django项目,自定义404、500页面时,需要项目setting中配置:

DEBUG=False,

ALLOWED_HOSTS=['*',](或ALLOWED_HOSTS=['127.0.0.1','localhost','192.168.1.155']等),表示允许访问本项目的地址配置完这两个,就可以自定义全局404、500页面了但,当DEBUG设置为False,此时setting中设置的静态文件路径,django均不会自动帮你配置,当HTML模板中需要用到setting中设置的静态文件路径时,一种是直接指定绝对路径:/static/image/xx.png;另一种是手动配置静态文件

路径:

首先,setting中配置是:

STATIC_URL='/static/'STATICFILES_DIRS=[os.path.join(BASE_DIR,'static'),]MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,'media')然后需要在urls.py中配置:

DEBUG=True时,static路径在url下不需要配置

fromdjango.views.staticimportservefromMxOnline.settingsimportMEDIA_ROOT,STATICFILES_DIRSurlpatterns=[#处理静态文件,使用Django自带serve,传入setting中路径配置MEDIAROOT,让它根据路径找media下的文件re_path(r'^media/(P.*)',serve,{"document_root":MEDIA_ROOT}),#需要手动static_dirs路径,然后使用serve根据路径帮忙找到static下的文件re_path(r'^static/(P.*)',serve,{"document_root":STATICFILES_DIRS[0]}),]

好了,准备工作完成了,开始全局404、500页面操作

1、404页面:

views:

fromdjango.shortcutsimportrender_to_responsedefpag_not_found(request):#全局404处理函数response=render_to_response('404.html')response.status_code=404returnresponse

urls:

#全局404页面配置handler404='MxOnline.views.pag_not_found'

HTML页面:

2、500页面:

fromdjango.shortcutsimportrender_to_responsedefpage_error(request):#全局500处理函数fromdjango.shortcutsimportrender_to_responseresponse=render_to_response('500.html')response.status_code=500returnresponse

#全局500页面配置handler500='MxOnline.views.page_error'

注意:2.0版本,测试中发现:只要将debug设置为False,将自定义404、500(必须命名:404.html、500.html)页面导入到项目中的templates中,当url访问出错(404、500状态码)时,会自动调用404.html、500.html页面

sql注入的危害

sql注入案例(使用原生sql语句):

select*fromuserwherename='${name}'

当用户输入name值为:'or1='1时,上述select代码变成:

select*fromuserwherename=''or1='1'

此时判断逻辑是符合要求的。类似这种就是sql注入。

xss跨站脚本攻击(CrossSiteScripting)的危害

xss攻击流程:

xss攻击防护

普通文本xxs攻击防护:

第二种是在Django后台导入escape过滤器(fromdjango.template.defaultfiltersimportescape),然后将前端用户提交上来的数据进行转义(假如包含js等脚本代码)再存入数据库中,这样js脚本等也都会被转义,再从数据库中取出,然后到前端展示,即使使用了safe过滤器也不会被渲染为js脚本执行。

富文本xxs攻击防护:

对于富文本提交的数据,肯定会包含一些html标签操作(如:字体颜色、字体样式等),这种要返回前端渲染展示时,就需要我们使用safe过滤器来将其标记为安全的,这样才能显示出富文本样式。这种情况就存在着xss脚本攻击的危险。但我们可以在后端对数据进行一些额为处理,比如:将需要的标签保留下来,把不需要的标签进行转义或移除掉。在python中,有一个库可以专门用来处理这个事情,具体解决方法如下:

1)首先安装bleach库:pipinstallbleach

bleach库是用来清理包含HTML格式字符串的库。他可以指定哪些标签需要保留,哪些标签是需要过滤掉的,也可以指定标签上哪些属性是可以保留,哪些属性是不需要的。demo:

ALLOWED_TAGS中,默认允许的标签:a、abbr、acronym、b、blockquote、code、em、i、li、ol、ul、strong

demo中方法介绍:

tag:表示允许哪些标签

attributes:表示标签中允许哪些属性

ALLOWED_TAGS:这个变量默认定义l一些允许的标签

ALLOWEND_ATTRIBUTES中:这个变量默认定义了一些允许的属性

bleach.clean方法:对提交的数据进行过滤

csrf跨站请求伪造(Cross-siterequestforgery)的危害

CSRF攻击流程:

CSRF攻击防范:

在form里面加上{%csrf_token%}

clickjacking攻击又称点击劫持攻击,是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱惑用户点击的手段。

攻击场景:

1、给用户发邮件,诱惑用户点开,当用户点开的时候其实链入的是一购物网站等等

2、用户进入到一个网页中,里面包含一个非常有诱惑力的按钮A,但是这个按钮上面浮了一个透明的iframe标签,这个iframe标签加载的是另外一个网页,并且这个网页的某个按钮和原网页中的按钮重合。所以你在点击按钮A的时候,实际上点击的是通过iframe加载的另外一个网页的按钮。

clickjacking防护:

场景1的情形是无法避免的。而像场景2是可以避免的,只要设置该网站不允许使用iframe被加载到其他网页中就可以了。我们可以通过在响应头设置X-Framen-Option来设置这种操作。X-Frame-Option可以设置以下三个值:

DENY:不让任何网页使用iframe加载我这个页面SAMEORIGIN:只允许在相同域名下使用iframe加载我的页面ALLOW-FROMorigin:允许任何网页通过iframe加载我这个网页在Django中,使用中间件django.middleware.clickjacking.XFrameOptionsMiddleware可以帮我们堵上这个漏洞,这个中间件设置了X-Frame-Option为SAMEORIGIN,也就是只有在自己的网站下才可以使用iframe加载这个网页,这样就可以避免其他别有心机的网页去通过iframe加载我们的网页了。

THE END
1.网课平台哪个好在线教育网站有哪些2024年网课平台十大排行榜最新发布,十大网课平台排行榜前十名有新东方在线、猿辅导、作业帮、粉笔公考、有道精品课、希望学、正保会计网校、途途课堂、华图在线、小盒课堂。十大在线教育排行榜由品牌研究部门收集整理大数据分析研究得出,帮助你了解在线教育平台有哪些。https://m.maigoo.com/maigoo/5045zxjy_index.html
2.网课哪个平台比较好在线教育平台有哪些十大品牌网CNPP重磅推出2024网课平台十大排行榜,十大网课平台排行榜前十名有新东方在线、猿辅导、作业帮、粉笔公考、有道精品课、希望学、正保会计网校、途途课堂、华图在线、小盒课堂。十大在线教育平台由品牌数据部门通过收集整理大数据分析研究得出,旨在告诉消费者网课https://www.cnpp.cn/china/list_5045.html
3.在线教育品牌排行榜前十名在线教育十大品牌排行榜2024年在线教育十大品牌排行榜,前十名分别是:课工场、卓展教育、沪江网校、鹰硕智慧教育、猿辅导、小象在线教育、VIPKID、小象在线教育、达内Tedu、正保远程教育。在线教育排行榜呈现出市面上受欢迎的在线教育十大品牌,这些品牌的在线教育表现出色,从在线教育排名前十名的品牌到其他热门品牌,我们都为您推荐选择。这份在线https://www.chinapp.com/brand/5191
4.线上教育平台有哪些?线上教育app推荐线上教育软件线上教育平台有哪些?教育不管是对于国家还是个人来说都是至关重要的,近几年受疫情的影响,通过互联网展开是线上教育逐渐走进大众视野,受到广泛欢迎,今天小编给大家介绍几款有优质的线上教育平台软件,软件提供海量的优质课程,各种中小学、考研等各种课程应有尽有,绝对能够满足大家各种学习需求,有需要的用户可以根据自己http://www.downcc.com/k/xsjyapp/
5.大力加强中小学线上教育教学资源建设与应用,教育部等5部门联合发文!《意见》有哪些重要举措?一起来看—— 《意见》本着坚持育人为本、坚持统筹规划、坚持集成创新、坚持应用导向的原则,着力解决三个问题:即丰富优质的资源建设问题、网络平台运行保障问题、线上资源与教育教学融合应用问题。基本目标是到2025年构建三个体系,一是基本形成定位清晰、互联互通、共建共享的线上教育平台体系;https://www.qingxin.gov.cn/qyqxjyj/gkmlpt/content/1/1348/mpost_1348414.html
6.上好在线互动课——同心县河西镇中学线上宁夏教育云平台培训为有效防控疫情,确保师生安全,做好线上教学工作,同心县河西镇中学严格落实县教育局的在线教学要求,发挥“互联网+教育”优势,充分利用宁教云平台开展在线互动教学和在线辅导。经过了两周的线上教学,老师们各自各都有了自己的小窍门,为了让所有教师更加熟练的运用宁教云平台进行线上教学和分享教学经验,我校积极组织教师http://lwjy.nxeduyun.com/index.php?r=space/school/theme/content/view&id=2130118
7.新东方大学考试官网考研考博上岸好课 年终钜惠 26考研在职考研25复试27考研公开课 在职考研统招管综双证免考单证HOT在职公开课MBAMPAHOT教育硕士管综复试复试调剂 26考研26政英数(高效备考)26直通车(慧学诊断)26专业课(热门专业)26无忧(小班精研)26寄宿营(火热报名中)HOT免费公开课HOT https://koolearn.com/
8.线上摄影课程平台哪个好学摄影线上好还是线下好 学摄影是一个实践性很强的领域,需要不断的拍摄、实践和经验积累,因此线下学习更容易获得实践机会和导师的指导,可以更加深入地了解摄影技巧和行业规律。但是,随着线上教育的快速发展和技术进步,许多优秀的摄影线上课程也可以为学习者提供丰富的资源和学习机会,而且更加灵活方便,不受时间和空间的https://www.hxsd.com/content/32100/
9.目前国内线上教育平台有哪些?这些年,线上教育的形式已经涌入了人们的生活,大家对于这样的教学模式越来越能够接受了。线上教育平台的模式很多,可能一些刚入行的新手并不是很了解。那目前国内线上教育平台有哪些? 我们从它的商业模式来进行分类: 这里并不是指线上教育平台的排名,仅仅是简单的分类! https://m.grazy.cn/article/10230.htm
10.国家中小学智慧教育平台强国新征程 教育谱新篇 消防安全教育 庆祝新中国成立75周年 弘扬爱国主义精神 中国语言文字数字博物馆 同上一堂好课 AI学习 在线教研 2024世界数字教育大会 铸牢中华民族共同体意识 学习二十大云课堂 国家智慧教育读书平台 基本功展示交流活动 树人课堂 心理健康 https://basic.smartedu.cn/
11.中国教育在线“作为中国教育的联结者和赋能者,中国教育在线致力于成为推动中国教育前行的力量。多年来,中国教育在线专注教育领域,坚持满足各类教育需求,对接国内外2000余所高校、3000余所高中,覆盖全国30余个省市,发布各类权威的招考、就业、辅导等权威的教育信息,专注于为国内外https://www.eol.cn/
12.黑龙江省鹤岗市绥滨县:用好“云平台”上好“三堂课”推动党员教育提质黑龙江省鹤岗市绥滨县在开展党员教育工作中精心组织、创新方式,充分运用信息化手段搭建党员学习教育线上平台,把学习建在网上,把党员连在线上,确保全县党员学习不“打烊”,有力推动党员教育提质增效。 抓好线上云课堂,上好“必修课” 鹤岗市绥滨县严格按照省市统一工作安排,上好学习贯彻党的二十大精神、省第十三次党代https://www.12371.cn/2023/03/16/ARTI1678962892303668.shtml
13.苏州线上教育中心官网首页登录入口苏州线上教育中心平台登录苏州线上教育中心是专为当地教师和同学打造的线上数字化在线教育平台,提供了直播课程以及相关视频内容的学习,让各位同学在家也能很好的进行学习。这里小编为大家带来了苏州线上教育中心官网首页登录入口,苏州线上教育中心平台登录地址,希望对你有所帮助。 苏州线上教育中心 https://shouyou.3dmgame.com/gl/375272.html
14.基础教育机构信息公开3.丰富体验,开展多样的线上活动。在居家学习的特殊时期,我们力争把疫情“危机”转变为教育“契机”,通过居家学习生活计划制定、阶段学习成果总结展示、体育运动打卡、家庭劳动小岗位的竞岗等不同形式的活动,让学生养成自主自律的学习生活好习惯,丰富了居家学习生活。 https://xxgk.mhedu.sh.cn/fwxxgk/detail.jsp?id=42167
15.线上教学平台运行总结(通用15篇)线上教学平台运行总结(通用15篇)3 开学仅仅两周,师生相聚的喜悦之情还没淡去,学生又因疫情被迫选择了居家学习。疫情再袭,我们教师初心不改,抗疫行动不仅在医护人员心间,更在我们教育人的行动中,曾经保卫后方的教师也冲到了抗疫前线,从“停课不停学”到“教学流调全做好”,我们尽己所能、兢兢业业地完成上级交给https://m.oh100.com/kaoshi/jiaoxuezongjie/646722.html