如何将Django作为Cordova项目的后端使用?
关于Cordova结合Django做后端的正确姿势
嘿,我来帮你理清这个思路~首先得明确:你不能直接在Cordova应用里使用Django模板,你的初步思路(把Django项目放进Cordova的www文件夹)确实不太对,原因很简单:
Django是后端框架,它的模板是在服务器端运行Python代码后渲染成HTML再返回给客户端的;而Cordova是把前端静态文件(HTML/CSS/JS)打包成APP,运行在设备的WebView里,它没法直接执行Python代码,也没法运行Django的服务器逻辑。
不过完全可以把Django作为Cordova的后端!正确的模式是前后端分离:Django负责提供API接口(返回JSON数据),Cordova前端通过HTTP请求和后端通信,下面是具体步骤:
1. 把Django改造成API服务
你需要用Django来写后端接口,推荐用Django REST Framework(DRF)来快速搭建API:
- 先安装依赖:
pip install django djangorestframework django-cors-headers - 创建Django项目后,在
settings.py里配置:- 把
rest_framework和corsheaders加入INSTALLED_APPS - 把
corsheaders.middleware.CorsMiddleware加到MIDDLEWARE的最前面 - 配置允许跨域访问(因为Cordova前端和Django后端是两个独立的服务,会有跨域问题):
CORS_ALLOWED_ORIGINS = [ "http://localhost:8000", # 本地测试用 "file://", # 允许Cordova本地APP访问 "https://你的服务器域名", # 部署后用这个 ]
- 把
- 接下来就可以写你的业务逻辑了:定义数据库模型、用DRF的序列化器把模型转成JSON、写视图处理请求、配置路由,最后启动Django服务器:
python manage.py runserver
2. Cordova前端调用Django API
在Cordova的www文件夹里,你可以用原生的fetch或者axios来发送HTTP请求,获取后端的数据:
举个简单的例子(用fetch):
// 在www/js/index.js里写请求逻辑 document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { // 设备就绪后调用API fetch('https://你的Django服务器地址/api/你的接口路径/') .then(response => response.json()) .then(data => { // 拿到数据后更新前端页面 console.log('从后端拿到的数据:', data); document.getElementById('app-content').innerText = JSON.stringify(data); }) .catch(error => console.error('请求失败:', error)); }
- 注意:如果是真机测试,要确保你的Django服务器能被设备访问(比如同一局域网内用电脑的IP,或者把Django部署到公网服务器);另外要在Cordova的
config.xml里添加允许访问的域名:<access origin="https://你的服务器地址/*" />
3. 核心逻辑说明
这种模式下,不需要写什么特殊的通信逻辑,就是标准的HTTP请求(GET/POST/PUT/DELETE等):
- Cordova前端负责界面展示、用户交互,把用户的操作转化为HTTP请求发给Django
- Django后端处理请求,操作数据库、执行业务逻辑,然后返回JSON格式的结果
- Cordova拿到结果后更新前端界面
内容的提问来源于stack exchange,提问作者lampShadesDrifter
相关产品推荐
相关产品推荐

