当前位置: 首页 > news >正文

一步一步开发微信小程序(Django+Mysql)

前提:假设你已经安装好Anaconda,微信开发者工具,MySQL数据库,IDE等工具

工具下载地址:

Anaconda:https://www.anaconda.com/download

MySQL:https://dev.mysql.com/downloads/mysql/

微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html

CodeIDE:VSCode:https://code.visualstudio.com/Download

​ Pycharm:https://www.jetbrains.com/pycharm/download/?section=windows(可能需要安装学习版)

Postman:https://www.postman.com/downloads/

配置相关环境:

# 创建环境
conda create --name SEClass(替换成自己想设置的名称) python=3.9# 激活环境
conda activate SEClass# 安装库
pip install Django
pip install djangorestframework(API接口开发库)
pip install mysqlclient

MySQL:

假设此时已经安装好mysql客户端

# 登录mysql
mysql -u root -p# 创建项目所使用的数据库(注意名字要符合要求,如不能使用-)
CREATE DATABASE your_database_name;# 进入刚刚创建的数据库
USE your_database_name;# 查看当前所在数据库:
SELECT DATABASE();

连接数据库:(使用数据库管理工具连接,如Navicat Premium)

(Navicat Premium官方下载地址:https://www.navicat.com/en/download/navicat-premium)

连接设置:

本地主机:localhost(或远程数据库主机地址)

端口:3306(默认端口号)

用户名:root(或其它创建的用户名)

密码:(输入你自己在安装mysql的时候设置的密码)

Django:

Django官网:https://www.djangoproject.com

官方教程:https://docs.djangoproject.com/zh-hans/4.2/intro/(墙裂建议跟着敲一遍)

创建项目:

$ django-admin startproject mysite(项目名称,自行设置)

项目结构(创建项目的时候会自动生成基础文件):

  • 最外层的 mysite/ 根目录只是你项目的容器, 根目录名称对 Django 没有影响,你可以将它重命名为任何你喜欢的名称。

  • manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin 和 manage.py 获取所有 manage.py 的细节。

  • 里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).

  • mysite/__init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。如果你是 Python 初学者,阅读官方文档中的 更多关于包的知识。

  • mysite/settings.py:Django 项目的配置文件。如果你想知道这个文件是如何工作的,请查看 Django 配置 了解细节。

  • mysite/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。阅读 URL调度器 文档来获取更多关于 URL 的内容。

  • mysite/asgi.py:作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口。阅读 如何使用 ASGI 来部署 了解更多细节。

  • mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。阅读 如何使用 WSGI 进行部署 了解更多细节。

(使用IDE进行Django项目的配置环境)

项目配置:(在根目录的settings.py中进行配置)

数据库配置:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'class-0912(你创建的mysql数据库名称)','USER': 'root','HOST': 'localhost','PORT': '3306','PASSWORD': '','OPTIONS': {'charset': 'utf8mb4'},}
}
API接口库配置:
INSTALLED_APPS = [...'rest_framework',"rest_framework.authtoken",
]
# 此项需要单独添加在settings.py文件末尾额外增加
REST_FRAMEWORK = {# Use Django's standard `django.contrib.auth` permissions,# or allow read-only access for unauthenticated users.'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'],'DEFAULT_AUTHENTICATION_CLASSES': ['rest_framework.authentication.TokenAuthentication',],
}
url路径配置:
from django.urls import includeurlpatterns = [# 配置后台管理页面path('admin/', admin.site.urls),# 包含应用的URL配置(此时你可能还没有创建your_app)path('your_app_name/', include('your_app_name.urls')),
]

启动项目:

# 默认端口
$ python manage.py runserver (默认端口为8000)# 更换其它端口
$ python manage.py runserver 8080

创建App模块(每个模块实现某项任务,模块设计根据实际需求进行设计):

$ python manage.py startapp your_app_name

设计模型:(在你创建App后,项目文件夹中会出现一个新的App文件夹,其中的model.py为设计模型的地方)

from django.db import modelsclass Reporter(models.Model):full_name = models.CharField(max_length=70)def __str__(self):return self.full_nameclass Article(models.Model):pub_date = models.DateField()headline = models.CharField(max_length=200)content = models.TextField()reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)def __str__(self):return self.headline

激活模型:

#根项目setting.py中修改
INSTALLED_APPS = [...,'your_app_name.apps.TestappConfig',
]

应用数据模型:(设计好模型后,需要进行数据库迁移,此时Django会根据你激活的模型里的设计,自动的创建数据库)

# 每次进行数据库迁移请按顺序执行下列代码
$ python manage.py makemigrations
$ python manage.py migrate

创建一个管理员账号:(输入后按提示进行创建)

python manage.py createsuperuser

在管理站点上注册模型:

your_app_name/admin.py:

from django.contrib import admin# Register your models here.
from .models import Reporter, Articleadmin.site.register(Reporter)
admin.site.register(Article)

编写视图:

视图函数的执行结果只可能有两种:返回一个包含请求页面元素的 [HttpResponse]对象,或者是抛出 [Http404]这类异常。至于执行过程中的其它的动作则由你决定。

from django.shortcuts import render
from .models import Articledef year_archive(request, year):a_list = Article.objects.filter(pub_date__year=year)context = {"year": year, "article_list": a_list}return render(request, "news/year_archive.html", context)

规划 URLs:

your_app_name/urls.py:

from django.urls import path
from . import viewsurlpatterns = [path("articles/<int:year>/", views.year_archive),
]

设计模板(可选,微信小程序开发用不太上):

上面的代码加载了 your_app_name/year_archive.html` 模板,可对该模版进行自定义设计

your_app_name/year_archive.html:

{% extends "base.html" %}{% block title %}Articles for {{ year }}{% endblock %}{% block content %}
<h1>Articles for {{ year }}</h1>{% for article in article_list %}<p>{{ article.headline }}</p><p>By {{ article.reporter.full_name }}</p><p>Published {{ article.pub_date|date:"F j, Y" }}</p>
{% endfor %}
{% endblock %}

编写API接口:

API接口的开发涉及最基础的三个文件:serializers.py(此文件需要你自行创建)、views.py和urls.py

serializers.py:此文件创建你想要进行序列化的模型字段
views.py:此文件创建你想要开发的API接口的试图逻辑,可自行根据业务需求进行设计,如接收GET/POST/PATCH等请求,解析request请求数据,根据请求数据进行业务逻辑设计,设计所需返回的response字段,将response字段根据serializers.py中定义的序列化函数进行序列化,返回API接口的状态码
urls.py:对你开发的API接口的试图进行url路径注册
your_app_name/serializers.py:from rest_framework import serializers
from your_app_name.models import yourModel# 此Serializer返回yourModel模型的指定或全部序列化字段
class myModelSerializer(serializers.ModelSerializer):class Meta:model = yourModelfields = '__all__'  # 返回全部或者指定您想要序列化的字段# fields = ['phone_number', 'avatar', 'resume']# 此Serializer返回需要自定义处理的字段,无需被模型字段限制
class customFieldSerializer(serializers.Serializer):old_password = serializers.CharField(required=True)new_password = serializers.CharField(required=True)
your_app_name/views.py:from rest_framework import generics
from rest_framework.response import Response
from rest_framework import status
from rest_framework.views import APIView
from .serializers import mySerializer
from .models import Reporter, Article# 通用View
class myGeneralListView(generics.ListAPIView):queryset = Reporter.objects.all()serializer_class = mySerializer# 自定义View
class articleCustomListView(APIView):# 未做异常处理,请自行完成def get(self, request):articles = Article.objects.all()articles_serializer = ArticleSerializer(articles, many=True)return Response({'articles': articles_serializer.data}, status=status.HTTP_200_OK)
your_app_name/urls.py:from django.urls import path
from .views import CustomListViewurlpatterns = [# path('userlogin/', UserLoginView.as_view(), name='user-login'),# ...其他URL配置...path('article-info/', articleCustomListView.as_view(), name='customlist'),
]

微信小程序:

官网文档:https://developers.weixin.qq.com/miniprogram/dev/framework/

官方教程:https://developers.weixin.qq.com/ebook?action=get_post_info&docid=0008aeea9a8978ab0086a685851c0a(不了解的墙裂建议跟着过一遍)

组件库推荐:Vant Weapp(也可使用其它组件库,详细搜微信小程序组件库)

官方地址:https://youzan.github.io/vant-weapp/#/home(可打开网站扫码查看预览小程序)

#注意:组件库推荐使用npm命令进行构建,使用npm命令需要在环境安装node# 安装 node
Macos端:
# 使用brew命令安装 或 去官网地址下载软件包(同windows端)进行安装
# brew命令的使用需要提前安装,见网址:https://brew.sh
# 终端输入:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"终端输入:brew install nodeWindows端:
# 官网地址下载软件包进行安装:https://nodejs.org/en/download# 检查npm是否安装
npm -v# 通过 npm 安装 
npm i @vant/weapp -S --production# 修改 app.json
将创建的微信小程序中的 app.json 中的 "style": "v2" 去除,因为小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱#构建npm项目
npm install# 构建 npm 包
打开微信开发者工具,点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件# 引入组件
以 Button 组件为例,只需要在app.json或index.json中配置 Button 对应的路径即可// app.json
"usingComponents": {"van-button": "@vant/weapp/button/index"
}# 使用组件
引入组件后,可以在 wxml 中直接使用组件
<van-button type="primary">按钮</van-button>

相关文章:

一步一步开发微信小程序(Django+Mysql)

前提&#xff1a;假设你已经安装好Anaconda&#xff0c;微信开发者工具&#xff0c;MySQL数据库&#xff0c;IDE等工具 工具下载地址&#xff1a; Anaconda&#xff1a;https://www.anaconda.com/download MySQL&#xff1a;https://dev.mysql.com/downloads/mysql/ 微信开…...

mysql 讲解(1)

文章目录 前言一、基本的命令行操作二、操作数据库语句2.1、创建数据库2.2、删除数据库2.3、使用数据库2.4 查看所有数据库 三、列的数据类型3.1 字符串3.2 数值3.3 时间日期3.4 空3.5 int 和 varchar问题总结&#xff1a; 四、字段属性4.1 UnSigned4.2 ZEROFILL4.3 Auto_InCre…...

k8s关于metadata、spec.containers、spec.volumes的属性介绍(yaml格式)

目录 一.metadata常用属性 二.spec.containers子属性介绍 explain pod.spec.containers给出的参考 1.command示例演示 2.env和envFrom示例演示 3.ports部分详解 4.resources部分详解 5.startupProbe格式演示 6.terminationMessagePath和terminationMessagePolicy格式演…...

腾讯域名优惠卷领取

腾讯域名到到期了&#xff0c;听说申请此计划&#xff0c;可获得优惠卷&#xff0c;看到网上5年域名只需要10元&#xff0c;姑且试试看。 我的博客即将同步至腾讯云开发者社区&#xff0c;邀请大家一同入驻&#xff1a;https://cloud.tencent.com/developer/support-plan?in…...

elastic-job 完结篇

一 elastic-job 1.1 案例场景分析 1.设置4个分片&#xff0c;10秒执行一次。 分片弹性扩容缩容机制测试&#xff1a; 测试1&#xff1a;测试窗口1不关闭&#xff0c;再次运行main方法查看控制台日志&#xff0c;注意修改application.properties中的 server.port&#xf…...

基于 Gin 的 HTTP 代理 demo

上次用 TCP 模拟了一个 HTTP 代理之后&#xff0c;感觉那样还是太简陋了&#xff0c;想着是不是可以用框架来做一个有点实际用处的东西。所以&#xff0c;就思索如何用 golang 的 Gin 框架来实现一个&#xff1f;嗯&#xff0c;对的你没有听错&#xff0c;是 gin 框架。你可能会…...

【ATTCK】MITRE Caldera - 测试数据泄露技巧

CALDERA是一个由python语言编写的红蓝对抗工具&#xff08;攻击模拟工具&#xff09;。它是MITRE公司发起的一个研究项目&#xff0c;该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的&#xff0c;能够较真实地APT攻击行为模式。 通过CALDERA工具&#xff0c;安全…...

【数据结构】树与二叉树(十二):二叉树的递归创建(算法CBT)

文章目录 5.2.1 二叉树二叉树性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点&#xff0c;其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…...

Qt绘制网格和曲线

绘制网格&#xff1a; void Widget::drawGrid(QPainter &p, QRect &windRect) {QRect rect(windRect.left()m_margins.left(),windRect.top()m_margins.top(),windRect.width()-m_margins.left()-m_margins.right(),windRect.height()-m_margins.top()-m_margins.bo…...

2023-11-12

今日比较摆烂, 但是把自写管道的原理搞懂了, 主要是把 exp 完完全全看懂了, 还不错. 然后就没干啥了. 明日计划: 学校的作业. AFL 源码. 我真是服了我自己了, AFL 源码搁多久了, 操操操 然后把 seccomp 重新学习下...

[工业自动化-16]:西门子S7-15xxx编程 - 软件编程 - 西门子仿真软件PLCSIM

目录 前言&#xff1a; 一、PLCSIM仿真软件 1.1 PLCSIM仿真软件基础版&#xff08;内嵌&#xff09; 1.2 PLCSIM仿真软件与PLCSIM仿真软件高级版的区别&#xff1f; 1.3 PLCSIM使用 前言&#xff1a; PLC集成开发环境是运行在Host主机上&#xff0c;Host主机与PLC可以通过…...

运行npm install卡住不动的几种解决方案

在前端开发经常会遇到运行npm install 来安装工具包一直卡住不动&#xff0c;为此这里提供几种解决方案&#xff0c;供大家参考学习&#xff0c;不足之处还请指正。 第一种方案、首先检查npm代理&#xff0c;是否已经使用国内镜像 // 执行以下命令查看是否为国内镜像 npm con…...

[Android]_[初级]_[配置gradle的环境变量设置安装位置]

场景 在开发Android项目的时候, gradle是官方指定的构建工具。不同项目通过wrapper指定不同版本的gradle。随着项目越来越多&#xff0c;使用的gradle版本也增多&#xff0c;导致它以来的各种库也增加&#xff0c;系统盘空间不足&#xff0c;怎么解决&#xff1f; 说明 grad…...

docker更改存储目录原因及方案

为什么一定要将docker的存储目录挂载到其他目录 docker在安装时默认存储目录在/var/lib/docker&#xff0c;而该目录是在系统盘下的。docker安装后&#xff0c;会使用各种各样的镜像&#xff0c;动辄几个G&#xff0c;那么如此多的镜像文件&#xff0c;装着装着系统盘就撑爆了…...

HTTPS的工作流程

. HTTPS是什么&#xff1f; https是应用层中的一个协议&#xff0c;是在http协议的基础上引入的一个加密层。 为什么需要HTTPS 由于http协议内容都是按照文本的方式明文传输的&#xff0c;这就导致传输过程中会出现一些被篡改的情况。运营商劫持事件最开始百度&#xff0c;…...

C++语言的广泛应用领域

目录 1. 系统级编程 2. 游戏开发 3. 嵌入式系统 4. 大数据处理 5. 金融和量化分析 6. 人工智能和机器学习 7. 网络和通信 结语 C是一种多范式编程语言&#xff0c;具有高性能、中级抽象能力和面向对象的特性。由Bjarne Stroustrup于1979年首次设计并实现&#xff0c;C在…...

Lambertian模型(完美漫反射)

这里使用相乘的方式组合光照色和纹理色。根据这个模型,面朝光源的区域光照强度高,纹理色也相应增强。面背光源的区域光照弱,纹理色也被抑制。这样通过光照和纹理的结合,可以合成出具有照明效果的面部颜色,而不仅仅是固定的纹理本身的颜色。相乘方式可以近似实现不同光照方向下面…...

MATLAB的编程与应用,匿名函数、嵌套函数、蒙特卡洛法的掌握与使用

目录 1.匿名函数 1.1.匿名函数的定义与分类 1.2.匿名函数在积分和优化中应用 2.嵌套函数 2.1.嵌套函数的定义与分类 2.2.嵌套函数彼此调用关系 2.3.嵌套函数在积分和微分中应用 3.微分和积分 4.蒙特卡洛法 4.1.圆周率的模拟 4.2.计算N重积分&#xff08;均匀分布&am…...

NFS服务器的搭建

架设一台NFS服务器&#xff0c;并按照以下要求配置 准备阶段&#xff1a;准备两台虚拟机&#xff0c;一台作为服务端&#xff0c;一台作为客户端 服务端&#xff08;Server&#xff09;&#xff1a;192.168.75.139 客户端&#xff08;Client&#xff09;:192.168.75.160 两…...

安卓Frida 常用脚本

打印调用堆栈, hook 某个方法,想看下调用堆栈,代码如下: function showStacks() {Java.perform(function () {send(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()));});} 二,需要hook okhttp3 HttpUrl …...

mfc140u.dll文件丢失怎么办?5种高效修复方法详解

1. 为什么你的电脑突然找不到mfc140u.dll了&#xff1f; 前几天帮朋友修电脑&#xff0c;他打开公司财务软件时突然跳出"找不到mfc140u.dll"的报错。这个场景太常见了——特别是用老版本行业软件的朋友&#xff0c;几乎都遇到过这个红色警告框。其实mfc140u.dll就像软…...

Phi-4-mini-reasoning完整教程:含端口映射、域名绑定、SSL证书配置

Phi-4-mini-reasoning完整教程&#xff1a;含端口映射、域名绑定、SSL证书配置 1. 平台介绍 Phi-4-mini-reasoning 是一个专注于推理任务的文本生成模型&#xff0c;特别适合处理数学题、逻辑题、多步分析和简洁结论输出。与通用聊天模型不同&#xff0c;它采用"题目输入…...

3分钟上手:跨平台资源下载神器res-downloader全攻略

3分钟上手&#xff1a;跨平台资源下载神器res-downloader全攻略 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否经常遇…...

3步掌握RePKG:从Wallpaper Engine资源包到可编辑素材

3步掌握RePKG&#xff1a;从Wallpaper Engine资源包到可编辑素材 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg Wallpaper Engine资源包逆向解析工具RePKG&#xff0c;专为提取壁纸…...

UDS诊断--0x27 SecurityAccess 安全访问服务

1. 服务概述SecurityAccess&#xff08;0x27&#xff09; 是 ISO 14229-1&#xff08;UDS&#xff09;定义的权限鉴权服务&#xff0c;用于客户端&#xff08;诊断仪&#xff09;向服务器&#xff08;ECU&#xff09;获取受保护诊断功能的执行权限。作用&#xff1a;限制未授权…...

Pixel Aurora Engine 集成SpringBoot:打造企业级创意内容API服务

Pixel Aurora Engine 集成SpringBoot&#xff1a;打造企业级创意内容API服务 1. 企业创意内容生产的痛点与机遇 在数字化营销时代&#xff0c;企业每天需要生产大量创意内容来满足不同渠道、不同受众的需求。从社交媒体海报到电商主图&#xff0c;从广告素材到活动页面&#…...

AIGlasses_for_navigation 与操作系统原理结合:实现高并发推理服务

AIGlasses_for_navigation 与操作系统原理结合&#xff1a;实现高并发推理服务 最近在折腾一个基于AIGlasses_for_navigation的实时导航服务&#xff0c;想法挺酷&#xff0c;但一上线就遇到了大麻烦。想象一下&#xff0c;成千上万的用户同时请求路线规划&#xff0c;你的服务…...

UEFI固件镜像解析:从FD到Section的逐层拆解

1. UEFI固件镜像解析入门指南 第一次拿到UEFI固件镜像时&#xff0c;很多人都会觉得无从下手。这个看似普通的二进制文件&#xff0c;实际上包含了计算机启动所需的所有关键代码。就像解剖人体需要了解骨骼结构一样&#xff0c;解析UEFI固件也需要先掌握它的层级架构。 我刚开始…...

【2026企业级Blazor落地白皮书】:金融/医疗场景下SSR+Hydration+Streaming SSR三模混合渲染实战(附GCP/Azure边缘部署Checklist)

第一章&#xff1a;Blazor 2026企业级落地战略全景图 Blazor 正在从“可选框架”跃迁为 2026 年企业级 .NET 应用的默认前端架构范式。其核心驱动力并非仅限于 C# 全栈统一&#xff0c;更在于 WebAssembly 运行时成熟度、AOT 编译稳定性提升、以及与 Azure Static Web Apps、Mi…...

OpenClaw模型微调指南:优化Qwen2.5-VL-7B特定场景图文识别准确率

OpenClaw模型微调指南&#xff1a;优化Qwen2.5-VL-7B特定场景图文识别准确率 1. 为什么需要微调Qwen2.5-VL-7B 去年我在做一个电商商品自动分类项目时&#xff0c;发现现成的多模态模型在识别特定品类商品时表现不佳。比如把"蓝牙耳机"识别成"助听器"&am…...