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中的二进制位运算符
May 13 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
python基础入门学习笔记(Python环境搭建)
Jan 13 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
python字符串和常用数据结构知识总结
May 21 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
python字符串反转的四种方法详解
Dec 02 Python
python中68个内置函数的总结与介绍
Feb 24 Python
Python如何合并多个字典或映射
Jul 24 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
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
python绘图库Matplotlib的安装
2014/07/03 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
.NET现在共支持多少种语言
2014/02/26 面试题
行政主管岗位职责
2013/11/18 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
2014年林业工作总结
2014/12/05 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android