0046 工程重命名
摘要:工程重命名的前提是先停止工程运行。 1 更改工程名 2 更改目录名 3 更改配置目录名 即包含manage.py文件的目录名。 4 进入工程配置 5 删除当前工程 5 新增工程 6 配置工程 7 运行工程,可以看到工程名更改成功!
阅读全文
0045 重构工程(python django升级)
摘要:在Python或Django升级后,如果软件要做相应的升级,则需要重构工程。 1 先在CMD下创建工程 2 复制一份虚拟环境目录 Django的虚拟环境,原则上一个工程一个虚拟环境,如果多个工程共享一个虚拟环境,容易报错。 3 PyCharm打开工程,配置虚拟环境 找到File/Settings/P
阅读全文
0044 用户授权
摘要:用户授权包括几个步骤: 1)弹出登录页面,不提供单独的接口,用户访问其它页面时,如果没注册,则直接进入登录页面。 需要注意的是:如果用户在公众号里访问其它页面,弹出登录页面时,会自动获取用户的微信信息,如头像、openid等。后端把这些用户信息一并发送到前端。如果用户在电脑浏览器上访问网页,则不获取
阅读全文
0043 工程通用工具编写
摘要:本项目的通用工具都存放在GeneralTools目录下,主要包括以下内容: 01 更改JWT Token交接方式(Authentication.py) 按JWT官方要求,JWT Token必须前端携带在Header提交。这样提交更安全,但前端每次提交数据请求的时候,都必须去获取Token,然后包装在
阅读全文
0042 django_celery任务处理(02 定时任务)
摘要:定时触发任务的步骤如下: 1 在settings.py中增加APP INSTALLED_APPS = [ # ... 'django_celery_results', 'django_celery_beat', ] 2 在settings.py中修改结果存储 为了更直观的看到定时任务的效果,结果暂时
阅读全文
0041 django_celery任务处理(01 视图任务)
摘要:程序中的任务主要有两类需求: 一是视图触发任务:就是当更新一个数据时,需要对其它数据进行汇总,而且汇总的数据量大,这时候,需要分为两个进程来处理,一个进程是把数据更新后返回前端,二个进程是执行汇总任务。所谓视图触发任务,就是只有在需要的时候,根据条件去触发任务。 二是定时触发任务:就是规定确定的时间
阅读全文
0040 腾讯云短信发送
摘要:1 获取短信发送参数 1.1 登录腾讯云,获取腾讯云短信开发者ID(AppID)和开发者密码(AppKey) 1.2 设置并注册短信模板,获取模板号 1.3 在GeneralTools目录下创建一个Constants.py文件,用于保存运行常量。内容如下: """ 腾讯云短信相关常量设置 """ #
阅读全文
0039 微信公众平台开发 (08 获取网页授权)
摘要:一般情况下,在公众号里的菜单或绑定url的文字图片等,就是点击需要跳转到我们编写的网页上去的时候,直接绑定接口的外网访问地址就可以了。也就是说,在浏览器怎么访问,在微信里还是怎么访问。 但在微信里,如果没有域名,会弹出提示页面,要求用户绑定域名。 微信的网页授权登录,主要是针对登录页面,要验证用户身
阅读全文
0038 微信公众平台开发 (07 带参二维码)
摘要:带参二维码是微信公众号用来管理用户的重要手段。 如果根据客户ID生成带参二维码,那么,当另一个客户扫描这个二维码时,公众号就能够接收到这个参数,并把这个参数设置为客户的上线。以此类推,可以把客户来源全部理清楚,有很大的商业价值。 如果根据组织ID生成带参二维码,就可以自动知道客户来源于什么组织。 总
阅读全文
0037 微信公众平台开发(06 公众号自定义菜单)
摘要:微信菜单分为自定义菜单和个性化菜单,所谓自定义菜单,是所有用户看到相同的菜单,而个性化菜单,则表示根据不同用户看到不同的菜单。或者相同的菜单,不同的用户使用不同的效果。 微信个性化菜单包含于自定义菜单,是一种特殊的自定义菜单。 编写自定义菜单,首先得要获取点击菜单后跳转的网址,点击菜单后,才能够确定
阅读全文
0036 微信公众平台开发(05 用户标签管理)
摘要:微信公众号根据不同的用户提供标签管理,给用户贴上标签,类似用户分组,为不同的用户提供个性化服务。 如:企业管理中,不同角色看到的菜单不同,不同客户享受的优惠和赠送的礼品不同。这些,都需要标签管理。 在Applications/Wechat/views下创建一个文件,名为:WechatTag.py,用
阅读全文
0035 微信公众平台开发(04 获取和存储AccessToken)
摘要:微信公众号要求用户对所有的请求都要携带AccessToken,wechatpy对于微信AccessToken会自动内部处理,一般单线程的情况下开发者不需要手动去操作,但是多线程情况下,必须使用持久化存储。 wechatpy下,开发者一般不需要访问AccessToken,如果需要,可以通过wechat
阅读全文
0034 微信公众平台开发(03 回复文本和图文消息)
摘要:微信收到消息和事件后,可以自动回复。回复类型大致包括文本回复、图片回复、语音回复、视频回复、音乐回复、图文回复。 文本回复和图文回复,直接就可以回复,而其它回复是媒体回复,需要先上传媒体文件,获取媒体文件的media_id,然后,再调用media_id做出回复。 故本文先学习文本回复和图文回复。 在
阅读全文
0033 微信公众平台开发(02 接收微信消息和事件)
摘要:有了测试账号之后,我们该做什么呢?当然是接收来自于微信的消息和事件。 公众号接收用户消息分为七类,包括文本消息、图片消息、语音消息、视频消息、小视频消息、地理位置消息、链接消息。 公众号接收用户事件分为五类,包括关注事件、取消事件、扫描带参数二维码事件、上报地理位置事件、自定义菜单事件。 当公众号接
阅读全文
0032 微信公众平台开发(01 成为微信开发者)
摘要:微信第三方开发工具较多,此处我们用wechatpy 01 获取并设置参数 登录公众号,拉到最下面,找到开发/基本配置页面: 01.1 在公众号开发信息中,获取开发者ID(AppID)和开发者密码(AppSecret)。 01.2 点击服务器配置下的修改配置,在Token中填入3-32个任意字符。 t
阅读全文
0031 DRF框架开发(18 异常Exceptions)
摘要:DRF提供了异常处理函数。 但工程中实际上需要有数据库异常,所以,需要重写exception_handler函数。 1 在GeneralTools目录下创建名为Exceptions.py文件(该文件在之前工程配置中已创建),内容如下: from rest_framework.views import
阅读全文
0030 DRF框架开发(17 分页Pagination)
摘要:DRF提供了分布支持 1 全局分页 DRF全局分页,只需要在配置文件中按以下方式配置就可以了。不需要代码更改。 REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination
阅读全文
0029 DRF框架开发(16 OrderingFilter过滤器排序)
摘要:对于列表数据,REST framework提供了OrderingFilter过滤器来排序,可以快速指定排序字段。 找到Applications/Examples/views/School.py文件最后一个类。 在filter_backends中增加排序过滤器。代码如下: from rest_fram
阅读全文
0028 DRF框架开发(15 django-filter过滤)
摘要:对于列表数据,可能需要根据字段进行过滤,DRF可以通过添加django-filter来增强支持。 1 安装django-filter(已安装) 2 在配置文件中增加过滤后端的设置。 INSTALLED_APPS = [ ... 'django_filters', # 需要注册应用, ] REST_F
阅读全文
0027 DRF框架开发(14 限流)
摘要:DRF可以对接口访问的频次进行限制,以减轻服务器的压力。 1 在配置文件中,使用DEFAULT_THROTTLE_CLASSES和DEFAULT_THROTTLE_RATES进行配置。 1.1 可选限流类 DEFAULT_THROTTLE_CLASSES参数用于设置可选限流类,主要有三类 AnonR
阅读全文
0025 DRF框架开发(12 多表增删改的实现)
摘要:一个接口同时更新多个表的步骤如下: 先针对每个表写一个序列化器 在视图中接收数据,并根据数据分别调用不同的序列化器。 1 新增主从表 在视图中先接收数据,把主从表的数据分别放在不同的字典里,把主表字典传入主表序列化器,如果主表数据存在,则获取主表ID,如果主表记录不存在,则先新增主表记录,完成后得到
阅读全文
0024 DRF框架开发(11 多表查询的实现)
摘要:我们之前创建了四个模型,学校模型,教师模型,学生模型,教师学生模型。其关系如下: 学校和教师是一对多,学校和学生也是一对多,而教师和学生是多对多。 现在,我们需要一个学校列表 ,同时显示每个学校的所有教师,和每个教师教的所有学生。 理一下思路,大致分为以下几步: 1 学校模型找教师模型:通过教师模型
阅读全文
0023 DRF框架开发(10 把模型字典传到前端)
摘要:模型字典主要是指在模型设计过程中对于每个字段的verbose_name和help_text verbose_name:标示字段显示的中文名 help_text:标示字段帮助信息 我们需要把这两个字段传到前端,让前端据此显示字段的中文名和帮助信息。让前端不必自己为字段命名,从而减少前端对业务的理解。也
阅读全文
0022 DRF框架开发(09 视图集)
摘要:通过基类视图,能够实现很简单,很有针对性的操作,但有时候,业务确实需要增删改查的功能都有。DRF提供了视图集,即一个视图,可以实现所有增删改查的功能。但由于url是否带参数,需要设置两个路由,即同样的接口名,一个带参一个不带参。 在视图集中,需要相应的功能,则需要继承mixins的对应扩展类。 打开
阅读全文
0021 DRF框架开发(08 子类视图)
摘要:GenericAPIView基类视图比APIView基类视图更简单。但还可以更简单,GenericAPIView视图中,要继承多个mixins,而且,还要写多个方法,能不能有一种办法,直接继承一个类,而且,不需要再在类中写多个方法呢?DRF早就为我们考虑到了! DRF提供了8个子类视图,用于针对单一
阅读全文
0020 DRF框架开发(07 基类视图 GenericAPIView)
摘要:前端于对数据操作的请求基本上就分为四类:增删改查,即增加、删除、修改、查询。 而DRF把前端请求分为两个大类:带ID参数请求和不带ID参数请求。 不带ID参数请求包括:增加、分布多条查询 带ID参数请求包括:删除、修改、单条查询 DRF针对这五类需求,分别提供了五个扩展类来支持,叫Mixin扩展类。
阅读全文
0019 DRF框架开发(06 基类视图 APIView)
摘要:之前学习了模型序列化和普通序列化,我们用最简单的视图和url实现了对序列化的操作。 而实际上,象之前那种由DRF自动生成所有的视图和url的情况,在应用是使用很少。而需要用户根据实际业务需求,自定义视图和url。 DRF提供了丰富的视图类,可以满足程序员的各种需求,基本上一个需求可以用多种视图来满足
阅读全文
0018 DRF框架开发(05 序列化器的字段与选项)
摘要:1 常用字段类型 字段构造方式 BooleanField BooleanField() NullBooleanField NullBooleanField() CharField CharField(max_length=None, min_length=None, allow_blank=Fals
阅读全文
0017 DRF框架开发(04 普通序列化器)
摘要:普通序列化器和模型无关,只是对针对提交字段的定义。 本文定义三个序列化器: 教师序列化器,学生序列化器,教师学生序列化器。这三个序列化器都使用普通序列化器。 1 教师序列化器 在Applications/Examples/views下创建一个Teachaer.py文件。 from rest_fram
阅读全文
0016 DRF框架开发(03 模型序列化器)
摘要:序列化器:是指从数据库提取数据,转化前端所需要的数据格式并返回到前端。 反序列化器:是指把前端传回的数据,转换成数据库需要的格式,存入数据库。 DRF提供了两种序列化器: 模型序列化器:是指和模型关联的序列化器,需要引入模型来定义序列化器。 普通序列化器:是指和模型无关的序列化器,和模型无关,只是一
阅读全文
0013 COREAPI自动生成接口文档
摘要:CoreAPI是基于djangorestframework框架下的自动文档生成器,只要按DRF规则写的路由,CoreAPI就可以自动生成接口文档。 1 编写DRF视图 编写DRF视图有多种方式, 本文本主要展示接口文档的自动生成。故编写一个最简单的视图。 1.1 新增一个视图文件 在Examples
阅读全文
0015 DRF框架开发(02 创建模型)
摘要:上一节介绍了DRF开发的基本流程,共五个步骤: 1 创建模型 2 创建序列化器 3 编写视图 4 配置URL 5 运行测试 本节主要讲解创建模型。 构建学校,教师,学生三个模型,这三个模型之间的关系是:学校和教师是一对多的关系,教师和学生是多对多的关系。为了更直观的体现多对多的关系,把一个多对多,转
阅读全文
0012 增加url的完整步骤
摘要:本文本以Examples APP为例,每增加一个url都需要做以下步骤: 1 创建模板 在Examples/Templates目录下创建一个名为exp-home.html的文件,内容如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="
阅读全文
0011 创建uwsgi配置文件
摘要:在配置文件目录Configurations下创建一个名为uwsgi.ini的文件,用于uwsgi服务配置。 uwsgi在服务器上使用,接收nginx的转发请求。 内容如下: # 配置文件:这一行必须有,如果[uwsgi]直接顶行,ubuntu18.04找不到 [uwsgi] #端口 # 服务器地址,
阅读全文
0010 Django工程配置(07 REST_FRAMEWORK配置)
摘要:DRF有丰富的功能,JWT认证、过滤、分页、异常处理、接口文档、限流、缓存等。 这些配置,有些需要写自定义接口,有些只需要配置就可以了。 1 在INSTALLED_APPS中,增加两个应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.cont
阅读全文
0009 Django工程配置(06 Django logging日志配置)
摘要:Django自带日志处理。日志不但方便调试,而且方便在项目上线后,查看报错信息。 日志器的规划非常重要,一般来说,项目中每个APP都应该对应一个日志器,而一个日志器对应两个日志文件: INFO日志文件:用于程序员输出信息 ERROR日志文件:用于输出系统报错信息 1 日志配置 在settings.p
阅读全文
0008 Django工程配置(05 系统认证模型配置)
摘要:Django提供了全套认证系统,本项目虽然使用JWT认证,但也是继承于Django认证模型。 我们本节要解决的问题是:Django提供了用户模型,但不完善,我们需要的一些字段没有,我们需要增加字段。Django框架不推荐自己建用户表,因为如果自建用户表,所有的认证系统将不能使用。 主要需求有两点:
阅读全文
0007 Django工程配置(04 文件数据库fastDFS配置)
摘要:fastDFS是由淘宝余庆开发的。开源,免费。主要用于大规模的文件存储。Django对文件的支持,默认是放在工程目录一起,如果文件量大,增加服务压力。所以,尽量把文件服务器分离开了,专门存储文件。 本节主要介绍如何通过django的自定义存储,自动把文件存储到fastDFS上。 01 安装客户端插件
阅读全文
0006 Django工程配置(03 缓存数据库redis配置)
摘要:redis数据库是缓存数据库,本项目中主要用于存储session,和其它频繁使用的数据。缓存数据库的优点是数据在内存中,速度快,效率高。使用频率大,但更新次数不多的数据,都存在缓存数据库里。 1 redis数据库的配置 redis数据库可以设置若干数据库,没有上线,一般配置128个数据库,每个数据库
阅读全文
0005 Django工程配置(02 关系数据库sqlLite,mysql配置)
摘要:本项目中包括两个关系数据库,sqlLite和mysql。sqlLite数据库是Django自带的,mysql需要自己配置。 1 sqlLite配置 sqlLite是Django默认数据库。 DATABASES = { 'default': { 'ENGINE': 'django.db.backend
阅读全文
0004 Django工程配置(01 常规配置)
摘要:两个目录的区别: 工程目录是指包含manage.py文件的目录 配置目录是批包含settings.py文件的目录 在配置目录中找到并打工settings.py文件,做以下配置: 01 DEBUG DEBUG=True:用于开发环境 DEBUG=False:用于生产环境 02 ALLOWED_HOST
阅读全文