Django微信小程序后台开发教程的实现


Posted in Python onJune 03, 2020

1 申请小程序,创建hello world小程序

在微信开发平台(https://mp.weixin.qq.com)申请小程序并获取APP id

Django微信小程序后台开发教程的实现

下载微信开发者工具(https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html),打开后登录并填入APP id 等信息。

Django微信小程序后台开发教程的实现

Django微信小程序后台开发教程的实现

2 添加交互框和按钮

index. wxml

<!--index.wxml-->
<view class="container">
 <input type="text" class="input" bindinput='input'/>
 <button bindtap="calculate">cal</button>
 <view>{{ result }}</view>
</view>

index.wxss

/**index.wxss**/
.input {
 border: 1px solid black;
 margin-bottom: 5px;
}

index.js

//index.js
//获取应用实例
const app = getApp()

Page({
 data: {
  result: "暂无结果",
  formula: ''
 },
 //事件处理函数
 calculate: function () {
  wx.request({
   url: 'https://shatter.xin/calculate',
   data: {
    formula: this.data.formula
   },
   success: res => {
    if (res.statusCode == 200) {
     this.setData({
      result: res.data
     })
    }
   }
  })
 },
 input: function (e) {
  this.setData({
   formula: e.detail.value
  })
 }
})

3 在服务器配置hello django

在服务器安装python3和pip3环境,并安装django

pip3 install django

创建django项目

django-admin startproject calculator
cd calculator

修改calculator/settings.py中的ALLOWED_HOSTS = []ALLOWED_HOSTS = ['*']

运行hello django项目

cd calculator
python3 manage.py runserver 0.0.0.0:8000

访问http://服务器ip:8000可以看到下图:

Django微信小程序后台开发教程的实现

4 实现计算器接口

创建django app

python3 manage.py startapp CalculateApi

在calculator/settings.py的INSTALLED_APPS中添加CalculateApi如下:

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'CalculateApi'
]

在calculator/urls.py中将url转发给CalculateApi处理。

from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include

urlpatterns = [
  path('admin/', admin.site.urls),
  url('^', include('CalculateApi.urls')),
]

在CalculateApi中新建urls.py文件,处理/calculate接口。

from django.conf.urls import url
from . import views

urlpatterns = [
  url('calculate', views.calculate)
]

在CalculateApi/views.py文件中添加calculate函数用于计算求值并返回。

from django.http import HttpResponse


def calculate(request):
  formula = request.GET['formula']
  try:
    result = eval(formula, {})
  except:
    result = 'Error formula'
  return HttpResponse(result)

再次运行服务器,访问http://服务器ip:8000/calculate?formula=2*3-5即可得到结果1。

Django微信小程序后台开发教程的实现

5 配置服务器将后端与微信小程序连接

由于微信要求使用https协议进行通讯,我们使用nginx + uwsgi + django来配置https服务器。

5.1 uwsgi配置

安装uwsgi

pip3 install uwsgi

配置django项目的uwsgi.ini,在calculator文件夹中新建uwsgi.ini文件

touch uwsgi.ini
vi uwsgi.ini

输入以下配置

[uwsgi]
# django项目监听的socket文件(可以使用端口代替)
socket = ./calculator.sock
# django项目所在目录
chdir = .
# django项目wsgi文件
wsgi-file = ./calculator/wsgi.py

master = true
processes = 2
threads = 4
vacuum = true

# 通过touch reload可以重启uwsgi服务器
touch-reload = ./reload
# 日志输出
daemonize = calculator.log

运行uwsgi服务器

uwsgi --ini uwsgi.ini
touch reload

5.2 http协议(80端口)下的nginx配置

安装nginx

sudo apt-get install nginx
cd /etc/nginx

修改nginx用户

vi nginx.conf

将第一行修改为

user root;

添加80端口的配置文件

cd conf.d
sudo touch calculator.conf
sudo vi calculator.conf

填入以下配置:

server{
  listen     80;
  server_name  服务器ip;
  charset UTF-8;

  client_max_body_size 75M;

  location ~ ^/calculate {
  		// replace "path" to the path of your project
    uwsgi_pass unix:///"path"/calculator/calculator.sock;
    include /etc/nginx/uwsgi_params;
  }
}

重启nginx服务器

sudo service nginx restart

访问服务器的80端口即可访问calculate接口,如http://服务器ip/calculate?formula=2*3-4

5.3 https协议(443端口)下的nginx配置

如果有自己的域名和ssl证书,将calculator.conf配置文件修改如下:

server{
  listen     443;
  server_name  your.domain;
  ssl on;
  ssl_certificate path/to/your/ssl.pem;
  ssl_certificate_key path/to/your/ssl.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;

  charset UTF-8;

  client_max_body_size 75M;

  location ~ ^/calculate {
    uwsgi_pass unix:///path/to/calculator/calculator.sock;
    include /etc/nginx/uwsgi_params;
  }
}

重启nginx服务器,访问服务器的443端口即可访问calculate接口,如https://服务器域名/calculate?formula=2*3-4

  • 如果你只有自己的域名而没有ssl证书,可以去申请免费的ssl证书或者参考此网址配置(https://certbot.eff.org/#ubuntuxenial-nginx)。
  • 如果你没有自己的域名甚至没有自己的服务器,请出门右转阿里云或左转腾讯云自行购买。

5.4 配置微信小程序的服务器信息

Django微信小程序后台开发教程的实现

运行小程序,一个简单的计算器就写完啦。

Django微信小程序后台开发教程的实现

到此这篇关于Django微信小程序后台开发教程的实现的文章就介绍到这了,更多相关Django小程序后台开发内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详解Python中的正则表达式的用法
Apr 09 Python
在Python中实现贪婪排名算法的教程
Apr 17 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
python中kmeans聚类实现代码
Feb 23 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
python使用Matplotlib画饼图
Sep 25 Python
Python logging设置和logger解析
Aug 28 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
python如何导出微信公众号文章方法详解
Aug 31 Python
python判断正负数方式
Jun 03 #Python
Python绘制动态水球图过程详解
Jun 03 #Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 #Python
Django DRF路由与扩展功能的实现
Jun 03 #Python
Django中使用Json返回数据的实现方法
Jun 03 #Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 #Python
基于Python绘制美观动态圆环图、饼图
Jun 03 #Python
You might like
php PDO中文乱码解决办法
2009/07/20 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
javascript json2 使用方法
2010/03/16 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
bootstrap table小案例
2016/10/21 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python 图片验证码代码
2008/12/07 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
python利用platform模块获取系统信息
2020/10/09 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
给校长的一封建议书
2014/03/12 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
golang实现浏览器导出excel文件功能
2022/03/25 Golang
linux目录管理方法介绍
2022/06/01 Servers
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python