基于远程开发环境部署 Django 与开发者空间 GaussDB 的实践应用
一、概述
1.1 案例介绍
Django 是一个高级的 Python Web 开源应用框架,可以快速开发安全和可维护的网站。Django 负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。
本案例借助开发者空间云开发环境部署 Django 项目,并与开发者空间提供的免费 GaussDB 数据库实例对接,完成一个 Web 应用构建。通过实际操作,让大家深入了解如何利用 Django 开发并部署一个 Web 应用。
华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云开发环境、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。
1.2 适用对象
企业
个人开发者
高校学生
1.3 案例时间
本案例总时长预计 40 分钟。
1.4 案例流程
说明:
申请华为云开发者空间的 GaussDB 数据库;
进行华为云开发者空间的云开发环境进行 Django 安装与适配;
启用 Django Web 服务,适配 GaussDB,在 Client 端测试 Django 的建表和数据操作。
1.5 资源总览
本案例预计花费 0.8 元。
二、案例准备工作
2.1 配置云开发环境
根据案例《开发者空间 - 云开发环境使用指导》,请查看下面链接,配置云开发环境,并通过 xshell 等链接工具登录云开发环境。
2.2 领取 GaussDB 数据库
免费领取 GaussDB 在线试用版(2025 年 06 月 21 日 - 2025 年 12 月 31 日)。
注:部署的 Django 项目需要对接 GaussDB,因此 GaussDB 需要绑定 EIP,参考上述指导中领取部分第(5)步
2.3 验证云开发环境与 GaussDB 互通
通过 xshell 或 windows 命令终端登录云开发环境,测试 GaussDB 能否连接,如下是通的
三、 Django 部署与 Python 驱动安装
3.1 创建项目虚拟环境
因为业务场景的 Python 开发,多数都是构建一个大型应用程序,并且不希望各种组件的各种版本之间相互冲突,所以需要设置一个虚拟环境。
先需要更新下载源。执行如下命令
环境激活后,用户名前会有(myenv)字样,如上图所示。
3.2 部署 Django 组件
安装之前,需要更新下 pip。
用 python3 自带的安装工具 pip3,安装组件。
注:安装 django3.2 版本,因为默认安装是 django4.2.23,对 PG 内核版本要求至少在 pg12 以上,但 GaussDB 的 pg 内核是 9.204,不满足 django4.2.23 需求。
可通过以下命令检测 Django 是否安装成功
3.3 安装 GaussDB 数据库对应的 Python 驱动
GaussDB 数据库对应的 Python 驱动为 psycopg2。即 Django 组件允许通过 psycopg2 驱动,连接 GaussDB 数据库,并操作数据对象。
不建议直接用 pip 去安装 psycopg2 驱动。所以从华为云 GaussDB 数据库官方文档中下载驱动。
解压后有两个文件夹:
psycopg2:psycopg2 库文件。
lib:lib 库文件。
使用 root 用户将 psycopg2 复制到 python 安装目录下的 site-packages 文件夹下。
修改 psycopg2 目录权限为 755。
将 psycopg2 目录添加到环境变量 $PYTHONPATH,并使之生效。
将解压后的上述 lib 目录,配置在环境变量 LD_LIBRARY_PATH 中。
本案例对应的 lib 目录是/home/xxx/GaussDB_driver/Centralized/Hce2.0_arm_64/lib,读者根据自己实际情况做修改
在创建数据库连接之前,需要先加载如下数据库驱动程序:
注意:如果引入 psycopg2 报找不到 libpq.so.5.5,是因为环境变量 LD_LIBRARY_PATH 没有包含 libpq.so.5.5 的目录路径,由于上述步骤 5 用 export 设置的临时环境变量,所以在新的会话中需要重新设置 LD_LIBRARY_PATH 指定之前解压的驱动 lib 目录
3.4 通过本地 IDE 创建 Django 项目工程
通过本地 IDE 连接云开发环境,参考使用VSCode连接云开发环境
通过 VSCode 连接成功后,在 IDE 里终端窗口通过 Django 组件,创建一个 Web 项目,项目名称为 myproj。
项目 myproj 创建完成后,项目目录中应该包含以下内容:
3.5 创建 myproj 项目的 Web 应用
在 myproj 的项目目录里,创建一个应用,例如本例中创建一个 djangoapp 的应用
此时 myprojdir 里会生成一个 djangoapp 应用目录,如下:
models.py : 用来存放 djangoapp 应用需要的在 GaussDB 数据库上的表。
views.py : 用来存放 djangoapp 应用要使用的视图结构。
test.py : 用来存放 djangoapp 应用需要的测试用例。
app.py : 用来编写 djangoapp 主程序。
四、myproj 项目对接 GaussDB 数据库
4.1 修改 GaussDB 数据库密码验证方式
进入GaussDB数据库控制台,进入 GaussDB 实例,点击参数管理,修改 GaussDB 的密码验证参数 password_encryptio_type 为 1。并点击保存生效。
4.2 创建 GaussDB 普通用户并赋 admin 权限
通过右上角登录 GaussDB 的 SQL 操作界面,用如下 SQL 创建 Django 链接的登录用户。
4.3 Django 项目端配置对接 GaussDB 数据库
进入创建的项目目录~/myprojdir/myproj 里,其中 setting.py 就是 Django 项目的配置文件。
配置字段如下(根据实际设置的 GaussDB 链接用户修改对应参数):
除了 DATABASES 的配置项,还要在 ALLOWED_HOSTS 列表中,添加 GaussDB 服务器的 IPv4 的地址。Web 应用才能允许 GaussDB 数据库的访问。
4.4 注册 APP ---- djangoapp
在 settings.py 中,INSTALLED_APPS 数组,添加 app 名称。如下:
注意:图片换成代码
4.5 验证 myproj 项目与数据库 GaussDB 对接结果
此时可以 GaussDB 数据库中,看到已经有 4 张表迁移到 GaussDB 里。
五、启动 Web 服务并进行业务操作
5.1 创建 Django 的 WEB 服务
在 IDE 终端中执行如下命令启动 Web 应用,部署端口为 8082(创建云开发环境时放开的端口都可指定,依据自身端口开放情况选择即可):
注:此处的 0.0.0.0 就是设置 ALLOWED_HOSTS 里的 localhost 地址
Web 应用启动后,如果想通过本地访问 Web 页面,需要做本地和云开发环境的端口映射,参考开发者空间 - 云开发环境使用指导-第4章2小节做端口映射
端口映射完成后可通过如下地址本地访问 Django 的 web 网页,如下图所示:
5.2 创建用户登录 Web 应用
在 IDE 的 myprojdir 目录下创建 create_user.py,执行 py 文件完成用户创建:
create_user.py 文件内容如下:
执行 create_user.py 文件,可查看 GaussDb 数据库中用户表中新增一条记录:
但此时用户密码是明文存放在数据库中的,不符合 django 规范,还不能使用该用户登录 admin 管理后台。
通过如下命令更改 test 用户密码,更改后可登录 Web 页面,登录页面如下:
5.3 创建表 Question 和 Choice
在 IDE 中 djangoapp 应用里编辑 model.py 文件,添加表 Question 和 Choice。
添加如下内容:
执行如下命令,创建将两张表 Question 和 Choice 同步到 GaussDB 数据库的任务:
注意:如果迁移 djangoapp 项目时报 libpq.so 找不到,设置 export LD_LIBRARY_PATH=/home/xxx/GaussDB_driver/Centralized/Hce2.0_arm_64/lib:$LD_LIBRARY_PATH,其中 xxx 替换成自己的用户名
再执行如下命令,创建将表事务同步到 GaussDB 数据库的 SQL:
如果执行命令过程中报错,可以执行如下命令检查错误原因
如果没有报错,则执行如下命令,执行迁移任务:
待迁移完成后,GaussDB 数据库可看到 Question 和 Choice 两张表:
5.4 Django 项目从 GaussDB 读写表数据
在 IDE myprojdir 目录下创建 py 文件 operate_question.py,完成对数据表 djangoapp_question 的增改查等操作:operate_question.py 文件内容如下:
执行 operate_question.py 文件,可看到 Question 数据表中新增一条记录:
至此本案例关于在开发者空间--远程开发环境中部署 Django 与开发者空间生态版 GaussDB 实践操作完毕。
五、反馈改进建议
如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!







评论