做小程序后端,你是不是被各种报错搞崩溃了?
明明代码没写错,就是跑不通。
这篇文不讲虚的,只讲怎么把 Django 和小程序连起来,让你少掉头发。
我干了15年建站,见过太多人死在环境配置和跨域问题上。
今天就把这些坑都给你填平。
先说最头疼的跨域问题。
很多新手写完接口,前端一调就报 CORS 错误。
别慌,这不是你代码烂,是浏览器在拦你。
在 Django 里装个 django-cors-headers。
pip install django-cors-headers
然后在 settings.py 里配好。
INSTALLED_APPS 加上 'corsheaders'。
MIDDLEWARE 里把 'corsheaders.middleware.CorsMiddleware' 放在最上面。
CORS_ALLOW_ALL_ORIGINS = True
先别管安不安全,跑通再说。
生产环境再改白名单。
这一步搞定了,你的接口才能被小程序看见。
接下来是数据库迁移。
很多教程让你先建表再写模型,这太慢了。
我习惯先写 model,再 migrate。
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
status = models.CharField(max_length=20)
别用 IntegerField 存状态,麻烦死了。
用 CharField,直观。
'pending', 'paid', 'shipped'。
看着就清楚。
小程序那边,wx.request 是核心。
别用 jQuery 那一套思维。
小程序是异步的,你要习惯 Promise 或者 async/await。
wx.request({
url: 'http://yourdomain.com/api/order/',
method: 'POST',
data: { status: 'paid' },
success(res) {
console.log(res.data)
}
})
注意,这里 url 必须是 https。
阿里云或者腾讯云的证书,花几十块钱买一个。
别用 http,微信现在查得严。
http 直接拦截,连请求都发不出去。
还有,数据格式要对。
Django 返回 JSON,小程序接收 JSON。
别返回 HTML,别返回 XML。
就返回纯 JSON。
class OrderViewSet(viewsets.ModelViewSet):
queryset = Order.objects.all()
serializer_class = OrderSerializer
用 DRF 吧,别自己写序列化器了。
太累,还容易出错。
DRF 的 Serializer 能自动处理很多边界情况。
比如时间格式,比如外键关联。
你只需要定义好字段。
created_at = serializers.DateTimeField(format='%Y-%m-%d %H:%M')
这样前端拿到的时间就是字符串,方便显示。
调试的时候,打开小程序的调试器。
看 Network 面板。
请求头里有没有带上 token。
如果后端需要登录,记得在 headers 里传 Authorization。
Bearer your_token_here。
后端用 django-rest-framework-simplejwt 做认证。
很简单,配置好就行。
别自己写 Token 验证逻辑,除非你是大神。
大部分时候,现成的轮子最好用。
最后说个心态问题。
报错别怕,看日志。
Django 的日志很详细。
tail -f logs/django.log
看到 Traceback,一行行看。
通常错误就在最后一行。
有时候是缩进错了,有时候是字段名拼错了。
这种低级错误,多写几遍就记住了。
别总想着找捷径。
老老实实看文档,比看一百篇教程都管用。
微信官方文档,Django 官方文档。
这两个地方,值得你反复看。
我带过的徒弟,凡是死磕文档的,最后都成了高手。
那些总想抄代码的,最后都卡在细节上。
所以,动手写。
别光看。
把上面的代码敲一遍,改改参数,跑通它。
这才是学编程的唯一路径。
希望这篇 django 微信小程序开发教程 能帮你省下几天时间。
如果有具体报错,评论区留言,我尽量回。
毕竟,同行互助,才是这行的常态。
加油,代码世界没那么多玄学,只有逻辑。