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的@property装饰器的用法
Apr 28 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
Python使用itertools模块实现排列组合功能示例
Jul 02 Python
Python实现TCP通信的示例代码
Sep 09 Python
python 多进程队列数据处理详解
Dec 23 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
Python try except异常捕获机制原理解析
Apr 18 Python
基于Python测试程序是否有错误
May 16 Python
python引入其他文件夹下的py文件具体方法
May 23 Python
python playwright 自动等待和断言详解
Nov 27 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
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
python双向链表实现实例代码
2013/11/21 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
python实现飞机大战
2018/09/11 Python
Python装饰器用法实例分析
2019/01/14 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
人力资源部培训专员岗位职责
2014/01/02 职场文书
申报材料格式
2014/12/30 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python