学习记录

这周的工作依然是做一些服务器的调试工作,但是为了方便这周末的展示,我打算把这段时间的所有后台搭建工作和对所有服务器的操作流程做一个系统的总结和归纳,方便学习记录与交流

一、微信小程序js部分

作为后台的开发人员,拿到前端交付的小程序的代码,首先要做的是完善不同按钮或者区块对应的功能,如果能用微信小程序API进行处理(不需要后台)的话,就可以直接参考微信开放文档对相关接口进行调用,这里我主要列出本小程序所使用到的主要API

(一)总流程

用户登录=>选择转换=>来到转换页面,选择需要转换的大小和尺寸=>上传证件照图片=>等待处理=>返回处理好的换底色证件照=>点击下载,保存至相册

(二)js处理流程

js处理流程:获取openid=>提供接口,获取尺寸、颜色和图片=>提供传送后台的接口,将数据打包传送至后台=>获取后台传输的数据,回显至预览窗口=>提供下载图片的接口

  1. wx.uploadFile

    wx.uploadFile({    //上传图片到django框架filePath:tempFilePaths[0],name: 'image',url: 'http://127.0.0.1:8000/app/get_image/',   //路由地址// url: 'https://www.cqcwangluo.site/app/get_image/',method:'POST',          //路由操纵类型header:{                //头文件'content-type':'application/x-www-form-urlencoded'    //发送过去的编码属性},formData:{    //附加属性opidopenid:that.data.openid,imgcolor:that.data.imgcolor,   //把选中的颜色返回imgsize:that.data.imgsize},success: res => { // 上传django成功时的回调函数console.log('[上传文件] 成功:', res)wx.showToast({title: '上传成功',icon:'success'})  console.log(res.data)  //打印返回的值var base64Img = res.datavar imgData = base64Img.replace(/[\r\n]/g, '')   //将回车换行换成空字符that.setData({imgData: imgData})},fail: e => { // 调用失败时的回调函数console.error('[上传文件] 失败:', e);wx.showToast({ // 显示消息提示框icon: 'none',title: '上传失败',})},complete: () => { // 调用完成时的回调函数wx.hideLoading() // 隐藏加载提示框}})
    

    url作为一个接口传递的参数,通过url给服务器传送请求

  2. wx.previewImage

    wx.previewImage({current: e.currentTarget.id, // 当前显示图片的http链接urls: this.data.files // 需要预览的图片http链接列表})
    
  3. wx.saveImageToPhotosAlbum

    wx.saveImageToPhotosAlbum({filePath: fileName,success (res) {wx.showToast({title: '保存成功',icon: 'success',duration: 2000})  },fail:function(result){if (!res.authSetting['scope.writePhotosAlbum']){//未授权访问本地相册,引导用户前往设置wx.showModal({title: '温馨提示',content: '用户拒绝授权访问本地相册将导致头像无法保存!如需继续操作,请点击确定前往开启授权。',success: function (res) {if (res.confirm) {//点击确定后前往授权设置页面wx.openSetting()}}})  }    }})
    
  4. 除了url与后台交互传输图片外,用户选取的单选框的结果同样需要被传送到后台处理程序,所以还需要将用户所选择的颜色和大小打包传送到后台

    举一个颜色单选框的js数据绑定

    radiocolorButtonTap: function (e) {console.log(e)let id = e.currentTarget.dataset.idconsole.log(id)for (let i = 0; i < this.data.colorbtns.length; i++) {if (this.data.colorbtns[i].id == id) {//当前点击的位置为true即选中this.data.colorbtns[i].checked = true;this.data.imgcolor= this.data.colorbtns[i].nameconsole.log(this.data.imgcolor);}else {//其他的位置为falsethis.data.colorbtns[i].checked = false;}}this.setData({colorbtns: this.data.colorbtns,msg: "id:"+id})}
    

    这样处理后在选择了对应的button后会将data的数据修改为对应按钮的数据,由此传送到后台的data不仅有图片数据,也有需要用到的需要处理的颜色和尺寸大小数据

二、Django后台部分

关于Django的具体学习过程可以参考我的第二周和第三周的学习记录,这里面有大部分的篇幅在描述学习Django后台开发的过程和笔记,包括用到的和暂时没有用到的,链接:https://blog.csdn.net/weixin_43951163/article/details/108019539,https://blog.csdn.net/weixin_43951163/article/details/108109351

这里将整个流程做一个简单梳理和总结

  1. 新建一个应用app,不同对应后台的不同功能模块
  2. 将该app的路由加入主站的urlpatterns中,使得通过访问该路由可以将处理分配到具体的应用
  3. 进入app,将该app下的不同的功能在urls.py中建立路由,在views.py中建立不同的处理函数,这些函数对应不同的该具体应用下的不同功能
  4. 这样整个简单的映射关系就出来了,通过访问主站下的不同子路由,可以将请求发送给不同应用下的不同函数进行处理

所以当js发送给本地请求:http://localhost:8000/app/get_image,会首先在manage.py中找到app对应的应用路由,我这里设置的是pc_change,所以转入到pc_change的urls.py中,而子请求/get_image对应view.py中的get_image函数,所以由该函数进行该请求的处理

具体的处理函数我放在了我的二、三周的学习记录里,主要功能是是通过处理图片的API进行处理,get_image函数仅仅是起到一个桥梁作用,将js传输过来的数据接收,然后传给处理函数,最后返回数据流给js端

三、服务器购买和域名申请

1、购买服务器

首先去腾讯云购买学生优惠服务器,链接https://cloud.tencent.com/act/campus

进入自己的控制台会发现一台服务器

2、下载SSH密钥

如果需要在本地直接登录服务器,比如mac系统直接登录,则需要下载SSH密钥到本地

3、域名注册

然后进入域名注册

进入网页后点击注册域名

按照提示完成域名注册

4、SSL证书申请

选择SSL证书申请,申请到后下载域名证书到本地

5、设置DNS解析

接下来进行DNS域名解析,将刚刚购买的域名进行解析

6、网站备案

在申请域名和证书三天后,可以进行网站备案,这个过程会需要提交大量信息,会花几天的时间

四、mac系统本地Django部署到centos服务器

官方的文档链接:https://www.django.cn/article/show-30.html

1、mac终端登录Centos服务器

在mac终端输入命令

chmod 600 "密钥文件地址"
ssh -i "密钥的绝对路径" root@'公网ip'

2、下载宝塔linux面板

然后下载宝塔linux面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

3、登录宝塔面板

然后通过最后输出几行的信息登录面板

然后下载推荐的几个组件(可以先下载Nginx和MySQL),可以根据自己的需求选择

4、配置Python环境

因为Django是以Python为基础,所以要下载Python项目管理器

然后出现以下界面

我们在版本管理里安装我们需要的Python版本。这里我以3.7.2为例,选择了国内的节点,国内节点安装会快一些。等一会就会安装成功

5、添加项目

域名处填写自己的域名即可,没有域名填写服务器IP地址

6、上传Django项目源码

留意:在打包项目源码之前,先在本地环境使用下面的命令把环境依赖包导出到requirements.txt文件里,并把这个文件存放在项目目录下,这一步奏非常重要,请务必记得操作。

导出命令

pip freeze > requirements.txt

这一步操作好之后,我们就通过下面的步骤把项目源码上传上到服务器上去

解压成功之后,就像下面那样。留意路径,记得源码一定要解压到根目录里。然后再检查一下,项目里有没有requirements.txt这个文件

7、添加uwsgi配置文件uwsgi.ini

留意:新建一个空白文件,文件名为uwsgi.ini。新建成功之后输入如下代码,然后保存:

#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:8997
#配置项目路径,项目的所在目录
chdir=/www/wwwroot/www.django.cn/
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录
wsgi-file=myblog/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log`

这里面,我们最需要留意的是项目路径和wsgi.py所在的目录

8、修改网站配置

左侧网站,然后点击网站名,在弹出的窗口里找到’配置文件’,然后配置文件里输入如下代码:

location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样uwsgi_param UWSGI_SCRIPT myblog.wsgi;  #wsgi.py所在的目录名+.wsgiuwsgi_param UWSGI_CHDIR /www/wwwroot/www.django.cn/; #项目路径}location /static/ {alias /www/wwwroot/www.django.cn/static/; #静态资源路径}

里面的端口、路径都要和uwsgi.ini里的一致

9、Python项目管理插件里添加项目

在左右的软件商店里找到Python项目管理插件,然后点击设置,添加项目。里面的各种选项很简单,按实际情况填写就行

值得说的就是那个端口,端口要和uwsgi.ini里面的那个端口一致。如果有多个项目的话,不同的项目要填写不同的端口。端口随便填写,只要不与其它常用软件端口冲突就好

10、进入虚拟环境

在命令行输入 source 项目路径/项目名_venv/bin/activate 如:

source /www/wwwroot/myblog/myblog_venv/bin/activate

11、SSL证书部署

在新建站点后,点击设置

将下载的SSL证书中的Nginx文件夹的两个密钥文件进行添加

按照指示填入并强制HTTPS,因为小程序上线必须强制HTTPS

五、总结

至此,整个后台服务器布置的流程就梳理了一遍,但是确实在部署的过程中遇到许多没有预料到的问题,做这个文档一方面是对整个流程做一个梳理,也希望大家一起学习指正,后面会继续更多的服务器与后台搭建的问题记录更新

小程序js+django+服务器后台搭建流程总结(第五周学习记录)相关推荐

  1. 小程序怎样和服务器交互,微信小程序与 Django服务器 数据流 交互通信

    Django服务器 解析小程序发送的json二进制字符串 https://blog.csdn.net/qq_25068917/article/details/81041048 http://www.c ...

  2. 微信小程序阿里云服务器https搭建

    已更新 2018-11-20 1.什么是https? HTTPS(全称:安全套接字层上的超文本传输​​协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTP ...

  3. 微信小程序 JS中遍历后台获取的data数据并赋值

    开发场景: 需要把后台Java端查询到的图片动态显示在页面上. Java端传过来的图片是base64类型的,前一篇文章已经介绍怎么把base64 转为图片.https://blog.csdn.net/ ...

  4. python能开发小程序吗_搭建小程序用Python语言可以搭建吗?

    原标题:搭建小程序用Python语言可以搭建吗? 正如我们在学习语言编程的过程中能发现各种逻辑规律的奥妙无穷那样,当我们能掌握一种语言编程方式之后,逐渐地也能深刻地感受到如今在小程序编写上还能有着怎样 ...

  5. Python+Django+LeanCloud+腾讯云函数学习记录(第一周学习记录)

    第一周学习记录 开始从事微信小程序云开发和后台搭建的实习工作,这半年来会一直定期更新学习记录 1.微信爬虫模块 1.Itchat包 ​ 使用itchat包的初衷是为了通过该包的login端口直接通过扫 ...

  6. 《微信小程序-证件照换底色》之三:微信小程序接收django的图片并部署到windows服务器上

    实现小程序接收django的图片并部署到windows服务器上 继上一篇:用pycharm搭建django框架接收微信小程序的图片后续 链接: https://blog.csdn.net/qq_449 ...

  7. 小程序登录本地服务器,微信小程序实现用户登录模块服务器搭建

    我选用的是node.js来搭建服务器,没有安装的小伙伴可以参考我的node.js其他博客. 服务器安装与配置 初始化项目,将会自动创建package.json配置文件. npm init -y 安装E ...

  8. django实现证件照换底色后端和小程序(第三周学习记录)

    第三周学习记录 继续上周的django后台搭建,经过讨论选择不使用mysql数据库存储用户上传证件照信息,直接通过base64转码的形式在后台处理并返回前端直接通过数据流预览并实现图片下载 一.后端获 ...

  9. 小白也能看懂的教程:微信小程序在线支付功能开通详细流程(图文介绍)

    微信小程序不仅是一个展示平台,更多会用到小程序的电商功能,当然了,支付目前而言需要接入微信支付,那么具体而言,微信小程序要怎么开通支付功能呢?最近需要在微信小程序中用到在线支付功能,于是看了一下官方的 ...

最新文章

  1. 用python做炒股软件-同花顺有python接口_基于python的炒股软件
  2. 如何估算大型项目的工作量
  3. 深入理解分布式技术 - 先更新数据库,还是先更新缓存
  4. mysql 允许其他主机访问权限_允许其他主机访问本机MySQL
  5. (组合数学笔记)Pólya计数理论_Part.2_群及其性质
  6. 学习记录——DSIC与IC的区别
  7. 【工业4.0】什么是工业4.0,这篇文章讲得明明白白!
  8. 整个行业都缺Web前端工程师,你还在问Web前端工作好找吗?
  9. Mount 挂载错误mount:block device /dev/sr0 is write – protected , mounting read-only
  10. 苹果Mac时间追踪工具推荐:Time Sink
  11. unity4.6 failed to update unity web player
  12. 教你如何用bat程序给电脑清理缓存垃圾(普通版)
  13. 【2020年领域新星】 Ruibo Liu 达特茅斯学院
  14. spring mvc +maven 集成 quartz实现定时任务
  15. 运营商宽带网速为什么用bit而不用byte
  16. 圣天诺 加密java_圣天诺Sentinel LDK 7.8壳加密的编译环境是什么?
  17. 一班洽谈框架细化_健全完善组织架构,明确细化职责分工,快速推进项目进展...
  18. Radius/Free Radius/Diameter协议
  19. 车轴山中学新食堂大揭秘!
  20. win7“显示桌面”

热门文章

  1. 举例理解transformer中的位置编码
  2. libev 设计分析
  3. 公安人口信息系统的备份需求与应用
  4. 卫星热分析实例仿真001:篮球太空中的温度
  5. TortoiseGit的安装、配置
  6. MindMaster 快捷键
  7. GIS教程之哪种语言更适合地理可视化:R 还是 Python?
  8. Oracle导出数据字典
  9. STC15实现温控闭环控制,数码管显示温度,按键调节温度,PID控制
  10. sscanf输出指定MAC地址格式