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年云课堂十大品牌榜中榜云课堂什么牌子好?经专业评测的2024年云课堂十大品牌名单发布啦!居前十的有:中国大学MOOC、学堂在线、学银在线、智慧树网、智慧职教icve、网易云课堂、哔哩哔哩bilibili、华文慕课、优学院、国图公开课等,上榜云课堂十大品牌榜单https://m.maigoo.com/maigoo/9354ykt_index.html
2.十大云课堂排行榜在线学习平台有哪些上线于2014年,国内优质的中文MOOC学习平台,由爱课程网携手网易打造,提供包括985高校在内的千余门课程。 查看 88.6 2 学堂在线(北京慕华信息科技有限公司) 世界慕课联盟成员之一,由国内头部高等教育机构——清华大学于2013年创办,专业提供高等教育培养方案、就业及终身学习解决方案的教育云服务平台。学堂在线拥有丰富的课https://www.cnpp.cn/china/list_9354.html
3.在线教育学习系统在线教育系统在线教育平台,在线教育学习平台,在线教育系统,在线学习系统,选短书一站式在线教育学习系统,在线教育平台排名,更适合互联网教学的在线教育平台,支持多种在线教育模式,还原真实教学课堂,让学员在线学习体验更好https://www.duanshu.com/study
4.在线教育品牌排行榜前十名在线教育十大品牌排行榜2024年在线教育十大品牌排行榜,前十名分别是:课工场、卓展教育、沪江网校、鹰硕智慧教育、猿辅导、小象在线教育、VIPKID、小象在线教育、达内Tedu、正保远程教育。在线教育排行榜呈现出市面上受欢迎的在线教育十大品牌,这些品牌的在线教育表现出色,从在线教育排名前十名的品牌到其他热门品牌,我们都为您推荐选择。这份在线https://www.chinapp.com/brand/5191
5.成人线上美术教育平台哪家好成人线上美术教育平台哪家好 在用户视觉体验愈发重要的当下,不论各行各业都对美术相关人才提出庞大的用人需求。因此在这样的局面下,相信许多对当下职业或发展现状不满的朋友会将目光移至原画师、插画师等美术相关的行业领域。但是想要转行并从事这些拥有广阔发展前景的行业,肯定少不了对美术相关专业的深入学习,这时成人https://wap.hxsd.com/content/22250/
6.高中线上教育机构排行榜哪家网课平台好随着科技的发展和教育模式的不断革新,网课平台已经成为众多高中生提升学业成绩的重要工具。然而,在众多的线上教育机构中,哪一个才是适合高中生的呢?比较好的高中线上教育机构推荐学而思、新东方、简单学习网、掌门一对一、高途课堂等等。 值得推荐的高中线上机构 https://www.thea.cn/xgkfd_zx_2595191-1.htm
7.初三辅导网校哪家好网课平台推荐初三辅导网校推荐:郑州创新学校、优状元高考学校、京太教育、太尚德学校、新东方初中英语网校、猿辅导初中英语网校、必克英语(Spiiker)英语网校等。 1初三全日制冲刺班哪家好 1、郑州创新学校 2、优状元高考学校 3、京太教育 4、太尚德学校 5、国师高考 6、优实力高考辅导 http://m.chusan.com/zhongkao/361155.html
8.线上雅思培训哪家好本页面是环球教育线上英语为您整理关于线上雅思培训哪家好的详情页面,线上雅思培训哪家好,就选环球教育线上英语,教育培训知名品牌,海外讲师执教、通俗易懂、深受广大学员所欢迎。http://beijing.gedu.org/zhuanti/20191209online_pc/
9.微信公众号信息聚合平台教育资讯┆寿光市多措并举打好线上教学“组合拳” 3月14日以来,寿光市教体局科学规划统筹安排,打好“线上教学”和“心理关爱”组合拳,组织开展学科教研活动560余次,教研员在线听评课2300余节,组织9位专业心理教师录制了系列居家心理课程,为学生讲解心理调适、学习规划和时间管理方法,引导家长耐心细致做好陪伴指导。https://trs.shouguang.gov.cn/api/weixin/news.aspx?id=89815
10.上好在线互动课——同心县河西镇中学线上宁夏教育云平台培训为有效防控疫情,确保师生安全,做好线上教学工作,同心县河西镇中学严格落实县教育局的在线教学要求,发挥“互联网+教育”优势,充分利用宁教云平台开展在线互动教学和在线辅导。经过了两周的线上教学,老师们各自各都有了自己的小窍门,为了让所有教师更加熟练的运用宁教云平台进行线上教学和分享教学经验,我校积极组织教师http://lwjy.nxeduyun.com/index.php?r=space/school/theme/content/view&id=2130118
11.新东方大学考试官网新东方大学考试官网是由新东方集团全资创办官方网校,依托强大的新东方师资力量与教学资源,为大学生提供考研考博、英语提升、四六级、雅思、托福、日语、韩语、教资在线网课。https://koolearn.com/
12.360源硕网招生代理机构教育机构代理平台360源硕网是一家专业为留学机构,k机构,英语培训机构,IT教育机构等各类教育培训公司进行线上信息发布,线上招生运营,线上招生获客的正规服务平台,是一家拥有多年招生经验经过工商备案的招生代理平台https://www.360yuanshuo.com/
13.上一篇:甘肃中医药大学2021年自2020年春季学期开始,为适应疫情防控常态化下教学管理,学校深化教育教学改革,从线上平台建设、教师线上教学能力提升、学生学习过程监控等全方位促进传统教学方式“在线化”,逐步形成较为完善的疫情防控常态化下教学管理运行机制。去年以来,学校已与优慕课、学堂在线(雨课堂)、中国大学MOOC、智慧树等国内各大线上教学平台https://www.gszy.edu.cn/reception/news/detail/me202111011448256693488631296781.htm
14.国家中小学智慧教育平台强国新征程 教育谱新篇 庆祝新中国成立75周年 弘扬爱国主义精神 中国语言文字数字博物馆 同上一堂好课 AI学习 在线教研 2024世界数字教育大会 铸牢中华民族共同体意识 学习二十大云课堂 国家智慧教育读书平台 基本功展示交流活动 树人课堂 心理健康 平台介绍 https://basic.smartedu.cn/
15.黑龙江省鹤岗市绥滨县:用好“云平台”上好“三堂课”推动党员教育提质黑龙江省鹤岗市绥滨县在开展党员教育工作中精心组织、创新方式,充分运用信息化手段搭建党员学习教育线上平台,把学习建在网上,把党员连在线上,确保全县党员学习不“打烊”,有力推动党员教育提质增效。 抓好线上云课堂,上好“必修课” 鹤岗市绥滨县严格按照省市统一工作安排,上好学习贯彻党的二十大精神、省第十三次党代https://www.12371.cn/2023/03/16/ARTI1678962892303668.shtml
16.切实保障线上教学——商河县教育资源公共服务平台专项培训为响应市委、市政府要求,商河县教育和体育局立足疫情防控工作实际,坚持立德树-人根本任务,积极组织、引导全县学校在疫情防控紧急状况下,切实使用商河县教育资源公共服务平台(以下简称“平台”)落实线上线下教育教学模式即时切换的目标,特组织2022年度平台深度应用技能在线培训。 https://shanghe.jndjg.cn/index.php?r=portal/content/view&id=1278371
17.苏州线上教育中心官网首页登录入口苏州线上教育中心平台登录苏州线上教育中心是专为当地教师和同学打造的线上数字化在线教育平台,提供了直播课程以及相关视频内容的学习,让各位同学在家也能很好的进行学习。这里小编为大家带来了苏州线上教育中心官网首页登录入口,苏州线上教育中心平台登录地址,希望对你有所帮助。 苏州线上教育中心 https://shouyou.3dmgame.com/gl/375272.html