任务 完善登录模块,提供找回密码的途径。 具体逻辑为: 输入用户名和注册邮箱 数据库比对一致后,随机生成验证码 利用Django的邮件发送模块发送验证码 验证码通过后,能够重置密码 用户名和注册邮箱 关键在于利用标签id筛选到输入内容,并且需要加入{% csrf_token %}生成密钥,传入ajax作为参数,否则会出现403无法响应。 访问网址:https://paas-class.bktencent.com/t/demoli/mechat/find_pwd/ 前端发送输入用户名与邮箱 得到输入框中内容 如用户名部分为: 选择器为: 按钮事件触发 需要实现通过点击按钮发送验证码向填写的邮箱地址发送邮件,对按钮部分添加get_verify属性,一直监听按钮按下,并引入倒计时: 当按钮按下,且按钮文字为获取验证码时,此时点击按钮则会触发js中的submit_verify()函数 同步检验输入有效性 为了得到Ajax请求验证有效性函数的返回值,需要通过同步ajax实现,声明async: false, 利用POST请求将用户名与邮件地址传送至后端进行处理,其中的请求路径url利用相对路径格式书写,便于之后上传服务器。 后端检验用户名和邮箱有效性 在url.py中新增路由映射关系 在views.py中新增处理模块submit_verify() 取出POST中数据:username=request.POST.get(‘username’) 查询表baseUser一对一的表User中是否存在输入的用户名:usernameF = baseUser.objects.filter(user__username=username) 验证通过 发送邮件,开始倒计时,传入后端进行验证码生成与邮件的发送,并显示输入验证码框 异步发送验证邮件 但发送邮件是消耗时间的活动,因此一定要用异步Ajax实现,验证通过时调用函数send_verify() 随机生成验证码 后端发送验证邮件 在url.py中新增路由映射关系 在views.py中新增处理模块send_verify() 生成验证码 generateVcode(request) 前端处理返回数据res 完善send_verify()异步请求 在输入框下面加上span成员,如下 将错误信息打印到相应位置 清除错误信息 利用Django的邮件发送模块发送验证码 首先参考博文Django——发送邮件的步骤通过QQ邮箱完成测试,下面介绍类比如何通过学校邮箱进行发送: 首先在网页中搜索关键词华科邮箱+SMTP,找到相关说明 二、客户端设置 使用Outlook、Foxmail等桌面邮件客户端软件或手机邮件客户端软件设置学校电子邮箱时按如下配置信息设置: SMTP服务器:mail.hust.edu.cn POP3服务器:mail.hust.edu.cn IMAP服务器:mail.hust.edu.cn 在settings.py文件中加入设定: 同样需要配置路由映射到函数send_mail():… Continue reading Django-发送邮件找回密码
Category: SaaS
Django-登录
计划完成一款帮助学习计划管理的小程序,实现其中的登录功能
难点:由于采用蓝鲸的开发平台,其中的登录模块已经经过设定,需要进行重建。
利用蓝鲸MagicBox组件库实现时间轴效果
开启多样页面之旅 任务 一直想将计划的完成情况实时更新在主页面 Summer Vacation Plan of 2020 时间轴可以起到这一作用。但希望以美观的形式出现,想到尝试使用学习SaaS时,蓝鲸的MagicBox前端代码可以直接使用。 效果 清空 生成样例 提交 2015-05-21 blue king 给你发了一封邮件 我们的目标是让您对腾讯云的服务… 查看详情 删除 5 分钟前 blue king 已经接受你的认证申请! 27 分钟前 blue king 给你回复 我们会用饱满的热情、诚恳的态度、专业的知识背景,耐心、细致地为用户解决问题… 回复 2015-05-20 2 天前 blue king 上传一组照片 5 分钟前 blue king 已经接受你的认证申请! 27 分钟前 blue king 给你回复 我们会用饱满的热情、诚恳的态度、专业的知识背景,耐心、细致地为用户解决问题… 回复 2015-05-20 2 天前 blue king… Continue reading 利用蓝鲸MagicBox组件库实现时间轴效果
蓝鲸实践作业——Django基础(三)
在进行SaaS开发时,面对如何对所有请求数据进行统一处理的需求,需要掌握中间件技术。如何将复杂的数据关系设计在DB中,需要掌握Django ORM中关联关系的技巧。如何对多条数据进行分页显示,需要掌握前后端数据交互。
Django基础——报错和调试记录
报错类型 RuntimeError at /task/register You called this URL via POST, but the URL doesn’t end in a slash and you have APPEND_SLASH set. Django can’t redirect to the slash URL while maintaining POST data. Change your form to point to dev.paas-class.bktencent.com:8000/task/register/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings. 通过ajax写POST请求时,提示需要在路径后面加上slash“/”才可以,即: Template-loader postmortem… Continue reading Django基础——报错和调试记录
蓝鲸实践作业——Django基础(二)
在SaaS上要开发一个类似评论功能,需要掌握何从页面上进行数据的异步提交,如何通过Django编写接口,如何通过ORM对数据进行增删改查,如何通过Admin界面管理DB中数据等技术。 题目 1.实现“选择业务”功能。调用cmdb的search_business接口,将获取到的业务渲染到“执行任务”页面的“选择业务”下拉框。2.实现 “选择主机“功能。a> 当页面初次加载时,或”选择业务”下拉框选到某业务时,查询选择主机接口。b> 实现选择主机接口,接收页面传上的json数据。c> 接口调用cmdb的search_host接口,将主机IP, 操作系统等信息返回d> 将返回的IP数据以表格形式渲染,每行显示一台主机 将该功能实现后,上线到生产环境。 思路 选择业务 在model.py中建立search_business表 在admin.py中注册该表 在命令窗口更新 在html中修改代码读取对应值 需要在view.py中将数据表search_business传入 原本担心如何把多个参数传入render函数中,但上次提供的教程采用字典格式,解决我的疑惑。 修改tasks.html遍历businesses 此时,可以现在admin页面增添数据项测试 选择主机 新增一个选择框 内容需要从页面中获取数据 可以筛选出表格的每一行,但出于可重用性考虑,建立主机数据表 与第一步相同,在admin.py中注册,再在命令行窗口更新数据表。之后在admin界面加入数据,在view.py像html传入数据,再修改html渲染传入的数据即可: 同理让选择框读取相应的数据 进行主机的选择 对选择框的内容进行读取,点击提交后,就可以刷新界面,将选定的得出。 通过选择器可以得到目前处于筛选框中的是哪个主机地址。 我们写script实现对页面内容的调整:表格重新加载为指定的那个 一个小小的尝试,实现页面内容的改动:点击提交按钮将表格内容删除。 因此我们只需要将表格只展示为符合条件的主机即可 简单的实现方法:将提交时产生的条件筛选产生新的数据项:再次渲染页面即可 通过ajax直接改变失败 表格中新增一项筛选特定主机 访问成功,提交ajax请求 但并没有减少表格显示,调试发现,此时的页面内容并没有跳转或更新。而且根据需求,最好只进行页面部分内容的更新而非刷新整个页面,继续其他方向的尝试—— 通过属性改变失败 可以把不被标签内的属性设为不可见,但此外不行,因此必须对内容进行替换。 最终方法 实现思路 首先通过逆向分析一个含有表格网页的代码 得知可以获得ajax返回的data并进行处理,找到了思路: 将页面此时拉取的特定主机编号通过ajax返回到筛选特定服务器的函数 函数利用条件筛选出特定主机 将特定主机的数据项返回至data JavaScript通过对data的处理填写入表格 将页面中表格的内容更新为新的表格 实现过程 处理返回为json格式的data数据 数据解析出来: 将表格内容动态替换为新的数据 先测试一组数据 观察格式,调整一下 现在只需要把传入数据替换位置即可… Continue reading 蓝鲸实践作业——Django基础(二)
蓝鲸实践作业——Django基础(一)
蓝鲸SaaS推荐基于Django框架进行开发。本节课程的入门级使用详解和实战演示,让你对Django MVC框架结构的每个模块的功能和相互关系有一个深刻的理解和掌握。 1. 在开发框架中拉起上节课的两个静态页面2. 实现“选择脚本”功能。a> 脚本表包含脚本名称和脚本内容两个字段b> 通过admin页面录入三条基本linux命令c> 通过”执行任务”页面的“选择脚本”可进行DB中数据的选择 将该功能实现后,上线到生产环境。 基本操作 进入工程 之前已建立好工程,按照指导贴子在home_application中进行修改,就不需要再创建新应用了(下一步可以忽略) 创建应用 将新应用添加到default.py文件对应位置 编码问题 用notepad将错误的编码修改为utf-8编码即可 admin没有权限登录问题 最初没有添加用户名称,之后遇到登录问题才明白少了步骤。 按照文档,进行第一步的添加user,添加新的migration.py文件,按照说明运行就成功了 go on 按照教程修改文件如下: models.py admin.py 线下成功 上线到生产环境 码云同步 在之前创建的git项目所在地址打开git bash 添加新修改文件 到开发者中心部署 上线后链接正确,但选项处空白:因为这里的admin处还未添加 我们直接在正式部署的环境处修改 进入https://paas-class.bktencent.com/o/【appname】/admin/后按照刚才的过程添加新的脚本 成功显示 选择题 Django的生命周期包含哪些?*多选 匹配成功后走到相对应的views函数,视图函数执行相关的逻辑代码返回执行结果 Django把客户端想要的数据作为一个字符串返回给客户端,客户端接收数据,渲染到页面展现给用户 url经过Django中的wsgi时请求对象创建完成,经过django的中间件,然后到路由系统匹配路由 当用户在浏览器输入url时,浏览器会生成请求头和请求体发送给服务端 下面哪些是Django的内置组件?*多选 model auth form admin 解答 model 是django的架构组成 内置组件: auth auth是django内置的用户认证系统,可以快速的实现登录,注册,注销,修改密码的功能 form form类,来处理web开发中的表单相关事项.form最常做的是对用户输入的内容进行验证,为此django的forms类提供了全面的内容验证和保留用户上次输入数据的支持 form组件的两大功能:… Continue reading 蓝鲸实践作业——Django基础(一)
蓝鲸实践作业——前端基础
处在互联网时代,对于页面内容展示的前端技术的术语,HTML, CSS, Javascript等大家一定耳熟能详。本节课程可以让你掌握如何实现页面的这几项基础技术。 题目 实现如下两个静态页面(可通过蓝鲸MagicBox实现)1> 两个页面有相同的导航栏,”执行任务”和“任务纪录”2> “执行任务”页面包含以下元素:a>两个下拉框:“选择业务” 和 “选择脚本”b>”执行”按钮c> 一个表格,包含以下几个表头:选择框、序号,IP, 操作系统,操作(选择框列用以勾选主机,进行后续提交操作)3> “任务纪录”页面包含以下元素:a> 三个下拉框:业务,用户,任务 一个“提交”按钮b> 一个时间选择器c> 一个表格,表头包含 “业务”“用户” “任务” “操作时间”“机器数” “状态” “参数” “详情” 将这两个页面成功“保存”,并“下载”到本地。 过程 第一个界面主要通过教程指引,按步骤完成;第二个界面则是完全依照教程展示的思路独立完成。 “执行任务” a&b 对MagixBox的使用途径不清楚,通过论坛的教程,找到PC端入口,之后通过可视化拖拽,将基本的组件完成编辑。 将代码复制到本地的html文件,即可通过浏览器打开。 c> 一个表格,包含以下几个表头:选择框、序号,IP, 操作系统,操作 “任务纪录” 通过观察入手,两个按钮目前没有添加效果,因此只是简单的把顺序互换,得到基础轮廓: a> 三个下拉框:业务,用户,任务 这一步同样简单,刚才的界面有两个复选框,我们复制其中的一个复选框并将其与其他的放在同一层次即可 不过此时,提交按钮自动移至下方,尚不知如何更改复选框的大小。 b> 一个时间选择器 在组件库中寻找 直接将代码复制到文件中的结果是苍白的 所以需要加入引入依赖文件,直接在最前面粘贴即可。 此时 原因是,通过这里描写可以看到,必须在使用其他js插件前调入jQuery,而我图省事直接把获得时间的js描述放到了前面,所以就没有加载成功。 还要注意,不要重复添加jQuery哦! c> 一个表格,表头包含 “业务”“用户” “任务” “操作时间”“机器数” “状态” “参数” “详情” 同样,我们先找到一个模板,并根据需要进行修改… Continue reading 蓝鲸实践作业——前端基础
蓝鲸实践作业——SaaS 应用开发进阶
Django工程开发好后,需要将它进行部署。通过本节课程中将Django工程转化为蓝鲸SaaS,并使用开发者中心进行部署的展示,你可掌握蓝鲸开发框架组件以及它集成的扩展能力,包括ESB组件, 后台Celery任务,数据可视化等。 题目 1.将脚本执行动作放到celery任务中异步执行2.将执行结果根据celery id存入同一条记录数据 将该功能实现后,上线到生产环境。 celery使用 出现报错如下: from celery.utils import timer2 File “C:\Users\cascara\Desktop\LearningMaterials\SAAS\saas\bkenv\lib\site-packages\celery\utils\timer2.py”, line 19 from kombu.async.timer import Entry, Timer as Schedule, to_timestamp, logger ^ SyntaxError: invalid syntax 经查询,是python版本不匹配的问题,应当使用3.6版本。虽然之前使用虚拟环境,但仍然发现是3.7版本 虚拟环境 使用python第三方库virtualenv实现多版本共存(虚拟环境),可以指定python版本 或者通过-p参数指向python.exe文件路径 进入虚拟环境 问题 from setuptools import setup, Extension, Feature ImportError: cannot import 是setuptool版本的问题,python3源中的setuptools已经升级到46以上。所以导致pip安装失败 AttributeError: module ‘os’ has no attribute ‘uname’ RuntimeError: failed to… Continue reading 蓝鲸实践作业——SaaS 应用开发进阶
蓝鲸实践作业——Python基础
题目 1. 使用Python语法在后台输出一个九九乘法表。 2. 写一个交互程序,实现摄氏和华氏温度的相互转换。摄氏温度转华氏温度的公式为: celsius * 1.8 = fahrenheit – 32。提示:input() 函数接受用户的输入,然后通过输入的最后一个字符是 C,还是 F 来区分用户输入的是摄氏温度,还是华氏温度。 解答 循环 2. 函数