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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
Python实例分享:快速查找出被挂马的文件
Jun 08 Python
python中对list去重的多种方法
Sep 18 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
python 拼接文件路径的方法
Oct 23 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
Python用字典构建多级菜单功能
Jul 11 Python
Django文件存储 默认存储系统解析
Aug 02 Python
使用Django实现商城验证码模块的方法
Jun 01 Python
Django基础CBV装饰器和中间件
Mar 22 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
jQuery插件的写法分享
2013/06/12 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
python二分查找算法的递归实现方法
2016/05/12 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
英格兰足协官方商店:England Store
2019/07/12 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
高三霸气励志标语
2014/06/24 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
java项目构建Gradle的使用教程
2022/03/24 Java/Android
Java基础——Map集合
2022/04/01 Java/Android