1 cutercorley

我要认证

本人目前大学本科,热爱IT,希望学习更多的前沿技术,在互联网方面取得发展,在这个领域开创出属于自己的一片天地。

等级
TA的排名 2k+

Python全栈(十一)Django项目之5.用户登录基本实现

用户登录需要发送请求、并接受校验参数,返回响应并进行持久化;参数包括用户名、密码和是否记住。后端使用authenticate验证用户,可以将错误信息传递到前端显示;嗨可以自定义用户认证后端,进而实现多种认证方式,此时需要重写authenticate方法。首页用户名展示有多种方式:上下文处理器auth传递变量user,不利于首页静态化;发送Ajax请求有延迟;Vue读取cookie渲染用户信息效率更高。

2020-10-24 10:14:47

Python全栈(十一)Django项目之4.短信验证码前端逻辑实现和注册性能优化

前端首先需要通过Vue绑定,并实现发送验证码的逻辑和视图。为防止恶意攻击,需要限制用户短信验证码的发送频率,通过设置标志变量实现,前后端同时完善相关逻辑;并在表单中验证短信验证码,同时对比和显示错误信息,还可以将相关信息保存到日志中。普通Redis一般多个请求不能同时进行,此时可以使用pipeline来实现多次发送和返回。发送短信时会有延迟,此时可以异步发送短信,具体是通过生产者消费者模式来解耦;Celery可以实现生产者消费者模式、提升效率;实现步骤包括创建实例并配置、定义任务、启动服务和调用任务。

2020-10-17 20:44:55

Python全栈(十一)Django项目之3.图形验证码实现逻辑和短信验证码初步实现

后端实现图形验证码验证时,需要先使用第三方包生成验证码,同时保存到Redis中,最后响应到前端注册页,需要配置好Redis;前端需要生成uuid,并获取验证码图片和显示,还需要对验证码长度进行验证。短信验证码逻辑为接收参数并校验,在校验成功、图形验证码正确时生成短信验证码并保存、响应;发送短信选择容联云通讯平台,可以进行开发调试,需要安装依赖库;同时为了多人发送短信而需要多次初始化类导致的内存占用问题,封装了短信发送的单例类。按照实现逻辑实现后端视图,并返回相应状态;为了避免硬编码,专门定义常量文件。

2020-10-07 16:00:15

Python全栈(十一)Django项目之2.用户注册功能实现

前端需要完善来实现验证,注册页面实现Vue属性,包括v-model、@blur和v-show等;定义Vue实现data和方法的定义,用于验证数据的合法性,还要保证只有验证成功后才能提交。验证字段有两种方式:后端form表单实现自定义验证,视图实现注册业务逻辑,验证成功则新建用户;前端Ajax实现验证,实现请求成功和失败的业务处理,需要后端定义接口。使用Redis实现状态保持,通过自带的login()方法实现,将用户信息写入session;将后端的Form错误信息显示到注册页面,向前端页面传递变量即可。

2020-10-05 17:06:38

Python全栈(十一)Django项目之1.项目搭建和用户注册逻辑

需求分析可以确定项目的业务流程和业务需求;项目主要包括首页、个人信息页等;项目分为用户、商品等模块,可以解耦和管理。项目采用前后端不分离模式;部署到Nginx,访问时可以根据不同的请求返回不同的结果。项目需要创建虚拟环境和安装所需库;需要配置开发环境的配置文件;进行MySQL配置;进行Redis配置;配置工程日志;配置静态资源文件和模板文件;配置时区。创建和配置用户app;实现用户注册页面。Django自带用户认证系统;提供了默认用户模型类;也可以自定义用户模型类。用户注册逻辑较多;需要用户注册接口。

2020-10-04 16:59:59

商业数据分析从入门到入职(9)Python网络数据获取

数据来源有很多;网络需要先请求再响应,使用浏览器访问,可以查看页面、页面元素、网络请求等;网页由HTML、CSS、JS等组成,从网页中抓取数据可以使用逐行扫描、属性模型等方式,有不同的工具。抓取BOSS直聘网站需要先预览网站基本情况,了解所需信息的特点;使用requests请求、bs库解析;定位到所需信息,并用循环和函数实现;进一步获取职位详情;最后进行词频统计和词云展示。王者荣耀英雄列表有JSON数据接口,可以通过json库处理;使用selenium模拟访问;将两个列表进行整合;最后实现关键字索引。

2020-10-03 10:26:00

Python全栈(十)Django框架之14.文件上传、登录状态和上下文处理器

普通方式文件上传需要后端接收和存储文件,前端定义相关标签和属性;使用模型上传直接使用FileField,还可以指定保存路径,包括upload_to和MEDIA_ROOT两种;可以限制文件扩展名来提高安全性;可以上传图片。cookie保存在浏览器,访问时会携带,session一般保存在服务器,浏览器访问时会根据id查询;可以设置、获取和删除cookie;session一般通过request.session操作,可以修改存储方案。上下文处理器可以定义变量,使之能在全局模板中使用;也可以自定义上下文处理器。

2020-09-30 11:33:54

商业数据分析从入门到入职(8)Python模块、文件IO和面向对象

被其他程序引用的Python文件称为模块,多个模块组成包,可以通过多种方式导入模块和包;Python标准库提供了大量库,还可以自己安装第三方库。数据保存到磁盘中可以使其持久化,有多种文件读写模式;可以读写文本文件,分段读写可以降低内存压力;可以读写二进制文件;with自动打开关闭文件;可以获取和改变在文件中的当前位置;还可以读写结构化文件。面向对象是Python的重要特性,对象包含属性和方法;定义类并实现属性和方法;可以继承父类,还可以重写父类方法;支持子父类之间调用;支持鸭子类型;可以重写魔法方法。

2020-09-29 10:47:46

Python全栈(十)Django框架之13.表单使用和数据验证

Django表单提供了渲染模板和验证数据的功能;定义表单类后,需要在视图中进行初始化并传递到模板,同时POST方法实现处理数据的逻辑。常用字段包括CharField等,有自己的属性;常用验证器包括RegexValidator等,实现更复杂的逻辑。有时候还需要自定义验证来实现对一个字段或多个字段的验证,需要通过方法实现;可以提取或自定义获取错误信息。ModelForm可以避免代码重复,Form类中直接定义Meta类绑定模型和指定验证字段;验证成功后直接调用save方法保存数据,也可以验证并保存部分字段。

2020-09-28 17:02:30

Python全栈(十)Django框架之12.HTTP对象、类视图和分页

WSGIRequest对象包括了客户端上传的所有信息,包括path、method、GET、is_secure等属性和方法;HttpResponse对象携带信息返回客户端,有content等属性和方法;JsonResponse对象用于返回json数据到客户端。类视图需要继承自View并实现相应的请求方法,可以提交数据、传递参数;TemplateView用于返回模板。ListView用于以列表形式展示数据,可以结合Paginator和Page实现分页。错误信息需要自定义模板显示;也可以创建app处理错误。

2020-09-27 17:16:21

商业数据分析从入门到入职(7)Python基础数据结构及其操作

列表是最常见的容器类型,一般用[]表示,可以创建列表并使用下标访问和切片;有多种方式删除和添加元素;可以排序;赋值需要注意浅复制;列表推导式可以高效创建列表,支持条件和嵌套。元组是不可变的容器,用()表示;与列表相比有自己的特点。字典是由键值对组成的容器,用{}表示;访问字典是根据键访问值;可以更新、删除或清空字典。集合类似于数学中的集合,无重复元素;可以进行集合运算。序列一般都可以转化为列表;序列转化为字典需要有成对元素;zip用于生成新序列;变量类型分为可变与不可变;可以直接用for循环遍历序列。

2020-09-26 15:24:52

Python全栈(十)Django框架之11.ORM迁移、请求限制和重定向

makemigrations用于生成迁移脚本,可以指定app、文件名和生成空脚本;migrate用于将脚本文件映射到数据库,可以指定app、文件名进行映射,也可以只添加记录;showmigrations用于查看迁移文件;sqlmigrate用于查看sql语句。迁移版本不对应时,需要删除迁移文件、app对应的记录,再重新生成迁移脚本,并使用--fake-initial进行映射。根据已有的表自动生成模型,包括生成模型、修正模型、映射模型等。限制请求方法可以使用装饰器。重定向可以从一个页面跳转到另一个页面。

2020-09-24 21:54:11

Python全栈(十)Django框架之10.ORM模型对象和QuerySet方法

模型.objects的类型是Manager,继承自BaseManager的from_queryset方法,实现动态添加属性和方法到类中。exclude方法排除满足条件的数据;order_by方法根据字段进行排序;values方法指定字段提取数据并返回字典;values_list方法返回元组;create方法创建数据并保存;get_or_create方法先查询数据,不存在则创建;exists方法判断数据是否存在;update方法更新数据;提取部分数据用切片;QuerySet对象不一定马上执行SQL语句。

2020-09-24 10:41:55

商业数据分析从入门到入职(6)Python程序结构和函数

if条件判断语句用于根据条件执行操作,可以进行嵌套;循环语句执行重复操作,包括while循环和for循环,while可与else结合使用,for循环经常与range结合使用,break终止循环;文本信息提取可以通过切片实现。函数可以替换代码、优化代码结构,可以根据是否传参和带返回值分类,参数分为位置参数和关键字参数,变量分为全局变量和局部变量。可变位置参数和可变关键字参数可以传入不定个数的参数;函数可以定义文档字符串;函数也可以作为参数;装饰器可以实现额外功能;匿名函数简单方便;报错可以进行异常处理。

2020-09-23 15:08:33

数据分析 常见技巧和经验总结

数据分析中有很多常见的经验和技巧。Pandas将dateime类型格式化为字符串,调用strftime()方法进行格式化转换即可。Pandas读取.sql文件,需要先执行.sql文件中的SQL语句将数据导入到MySQL数据库中,再使用pandas从数据库中读取数据。持续更新中。

2020-09-22 21:10:44

Python全栈(十)Django框架之9.聚合函数和表达式

使用聚合函数来统计数据信息:Avg函数用于求平均值,返回的结果是字典,可以先过滤再使用聚合函数;aggregate返回字典,只有1个键值对,annotate返回QuerySet,可以进行分组和联合查询;Count用于获取对象的个数,指定distinct参数为True可以进行不重复计数;Max和Min用于获取对象的最大值和最小值;Sum用于求对象的总和,可以综合使用、实现各种需求。F表达式可以实现批量操作,而不需要先读取、再遍历操作、最后保存;Q表达式可以进行与运算、或运算和非运算,或者几种运算的结合。

2020-09-21 17:27:52

商业数据分析从入门到入职(5)Python基本语法和数据类型

程序是指定计算机进行计算的指令,编程语言具有基本要素和指令;Python具有简洁、支持丰富的特点,应用于数据分析和软件开发;工具选择Anaconda;在命令行中启动jupyter notebook。print函数用于打印字符串;notebook可以进行计算;Python有其基本的语法规范;基本数值数据类型包括整型、浮点型、布尔型和字符串,不同类型间可以进行转换。对字符串的常见操作包括结合重复、提取切片、分割合并、替换和布局等。输出函数时print,输入函数是input,可以用多种方式进行字符串格式化。

2020-09-20 21:26:19

Python全栈(十)Django框架之8.外键约束和查询操作

两个表之间可以通过外键建立联系;插入数据时应保证数据在父模型中存在;ORM可以简化外键数据查询;不同app之间建立外键关系需要添加app名;存在自关联外键时,to参数为self或模型名;删除存在外键关系的父模型数据有多种方式,包括级联、受保护、设为空值等操作。exact用于精确查询,iexact使用like;contains用于模糊查询且区分大小写,icontains不区分,get和filter有区别;in用于查询值是否在某个容器中;比较包括大小和范围;日期和时间查询包括date、year和time。

2020-09-19 15:09:35

商业数据分析从入门到入职(4)初识商务智能

商业智能,是一套完整的解决方案,用来将企业中现有的数据进行有效的整合,快速准确的提供报表并提出决策依据,帮助企业做出明智的业务经营决策;提供了从数据到挖掘出商业价值的全周期整套工具;一个完整的BI应包括人(决策层、管理层、员工)、系统(业务数据库、数据仓库)和企业流程最底层是分散的数据库和遗留数据,ODS与DW不完全一致,ETL即为提取、转化和存储数据,联机事务处理更偏向实际业务,联机分析处理更接近顶层报告。常见的BI包括Oracle、SAP、Microsoft等;Power BI可以实现丰富的功能。

2020-09-17 21:21:24

Python全栈(十)Django框架之7.ORM常用字段、属性和Meta配置

ORM常用字段包括AutoField、BigAutoField、BooleanField、CharField、DateTimeField、EmailField、TextField、URLField等,不同的字段对应着不同的数据类型,可以实现不同的需求。字段常见参数有:null指定是否允许为空;db_column自定义字段名;default设置默认值;unique设置字段值唯一。模型的Meta子类可以设置属性实现控制模型特性:db_table用于自定义表名;ordering用于设置查询数据时的排序方式。

2020-09-17 11:21:55

查看更多

勋章 我的勋章
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 原力突破
    原力突破
    参与《原力计划【第二季】— 打卡挑战》的文章入选【打卡挑战周榜】的博主,即可获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 原力探索 · S
    原力探索 · S
    在《原力计划【第二季】》打卡挑战活动中,发布 12 篇原创文章参与活动的博主,即可获得此勋章。(本次活动结束后统一统计发放)
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取