本案例由开发者:xiaowuyun提供
一、概述
1. 案例介绍
Django是一个高级的Python Web开源应用框架,可以快速开发安全和可维护的网站。Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。
Pillow 是Python中较为基础的图像处理库,主要用于图像的基本处理,比如裁剪图像、调整图像大小和图像颜色处理等。
Markdown模块允许你将Markdown文本转换为HTML。Markdown是一种轻量级标记语言,它允许你使用易读易写的纯文本格式编写文档,然后转换成有效的HTML。
本案例借助开发者空间云开发环境Python中部署Django,Pillow,Markdown,并与开发者空间提供的免费GaussDB数据库实例对接,完成一个博客系统的构建。
华为开发者空间是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。
2. 适用对象
- 企业
- 个人开发者
- 高校学生
3. 案例时间
本案例总时长预计60分钟。
4. 案例流程

说明:
- 申请华为云开发者空间的GaussDB数据库;
- 进入华为云开发者空间的云开发环境,准备python环境,部署Django、Pillow、Markdown等组件;
- 启用博客系统,适配GaussDB。
5. 资源总览
本案例预计花费0.8元。
| 资源名称 | 规格 | 单价(元) | 时长(分钟) |
|---|---|---|---|
| 华为开发者空间 - 云开发环境 | 鲲鹏通用计算增强型 kc1 | 2vCPUs | 4G | HCE | 免费 | 60 |
| GaussDB | gaussdb.opengauss.xe.dn.s6.xlarge.x864.ha|4 vCPUs | 16 GB | 免费 | 60 |
| 虚拟私有云VPC | 标配 | 免费 | 60 |
| 弹性公网IP | 按流量计费 5Mbit/s | 0.8元/GB | 60 |
二、配置云开发环境
本案例中,使用华为云《开发者空间云开发环境使用指导》的“三、PC端创建和管理云开发环境”章节完成cli工具安装、环境配置、创建云开发环境、开机、建立隧道连接的功能。

三、GaussDB数据库准备并配置
3.1 GaussDB数据库
GaussDB数据库实例已开通,如未开通可参考:购买GaussDB实例
注意:部署的Django项目需要对接GaussDB,因此GaussDB需要绑定EIP。
购买完成后在实例的基础信息页修改安全组,开放22端口与8000端口:

3.2 修改GaussDB数据库密码验证方式
进入GaussDB数据库控制台,进入GaussDB实例,点击参数管理,修改GaussDB的密码验证参数 password_encryption_type 为 1,并点击保存生效。

在弹出窗口输入YES,点击确定按钮:

3.3 初始化数据库及用户
登录后创建数据库:

点击数据库名称进入库管理,然后点击sql窗口:

创建blog用户:
create user blog with sysadmin password 'Gauss#123';

四、Python环境准备
参考《本地VSCode基于华为开发者空间云开发环境完成小程序开发》的“三、本地IDE直连云开发环境完成上传下载”中的“1.下载VS Code 并安装 Remote-SSH 插件、2.连接云开发环境”章节完成VS Code直连云开发环境。

4.1 创建项目虚拟环境
因为业务场景的Python开发,多数都是构建一个大型应用程序,并且不希望各种组件的各种版本之间相互冲突,所以需要设置一个虚拟环境。
先需要更新下载源。执行如下命令:
sudo yum -y update
sudo yum -y upgrade


安装virtualenv:
pip3 install virtualenv -i https://repo.huaweicloud.com/repository/pypi/simple/

创建虚拟环境:
python3 -m venv myenv
激活环境:
source myenv/bin/activate

环境激活后,用户名前会有(myenv)字样,如上图所示。
4.2 python模块安装
安装之前,更新pip:
python3 -m pip install --upgrade pip -i https://repo.huaweicloud.com/repository/pypi/simple/

使用pip3依次安装django、markdown、Pillow模块:
pip3 install django==3.2 -i https://repo.huaweicloud.com/repository/pypi/simple/
pip3 install markdown==3.6 -i https://repo.huaweicloud.com/repository/pypi/simple/
pip3 install Pillow==10.3.0 -i https://repo.huaweicloud.com/repository/pypi/simple/

注:安装django3.2版本,因为默认安装是django4.2.23,对PG内核版本要求至少在pg12以上,但GaussDB的pg内核是9.204,不满足django4.2.23需求。


4.3 安装GaussDB数据库对应的Python驱动
GaussDB数据库对应的Python驱动为psycopg2。即Django组件允许通过psycopg2驱动,连接GaussDB数据库,并操作数据对象。
不建议直接用pip去安装psycopg2驱动。所以从华为云GaussDB数据库官方文档中下载驱动。
依次执行以下命令:
wget https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1750076538851/GaussDB_driver.zip
unzip GaussDB_driver.zip
cd GaussDB_driver/Centralized/Hce2.0_arm_64/
tar zxvf GaussDB-Kernel_505.2.1_Hce_64bit_Python.tar.gz



解压后有两个文件夹: - psycopg2:psycopg2库文件; - lib:lib库文件。

使用root用户将psycopg2复制到python安装目录下的site-packages文件夹下:
sudo cp psycopg2 $(python3 -c 'import site; print(site.getsitepackages()[0])') -r
修改psycopg2目录权限为755:
sudo chmod 755 $(python3 -c 'import site; print(site.getsitepackages()[0])')/psycopg2 -R
将psycopg2目录添加到环境变量$PYTHONPATH,并使之生效:
export PYTHONPATH=$(python3 -c 'import site; print(site.getsitepackages()[0])'):$PYTHONPATH
将解压后的上述lib目录,配置在环境变量LD_LIBRARY_PATH中:
本案例对应的lib目录是/home/developer/GaussDB_driver/Centralized/Hce2.0_arm_64/lib,开发者根据自己实际情况做修改。
export LD_LIBRARY_PATH=/home/developer/GaussDB_driver/Centralized/Hce2.0_arm_64/lib:$LD_LIBRARY_PATH
在创建数据库连接之前,需要先加载如下数据库驱动程序:
python -c "import psycopg2;"

注意:如果引入psycopg2报找不到libpq.so.5.5,是因为环境变量LD_LIBRARY_PATH没有包含libpq.so.5.5的目录路径,由于上述步骤5用export设置的临时环境变量,所以在新的会话中需要重新设置LD_LIBRARY_PATH指定之前解压的驱动lib目录。
五、程序使用
开源项目:django-dog-blog,一个基于bear blog样式的Django博客系统。
5.1 下载代码
点击Download ZIP下载,并解压:

5.2 VS Code上传代码
选择解压后的文件夹,拖入VS Code:

5.3 VS Code修改代码
打开dogBlog目录,双击setting.py文件,修改数据库信息,搜索DATABASES,用如下代码替换:
DATABASES = {
"default": {
'ATOMIC_REQUESTS': 'True',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'blog', # 数据库名
'USER': 'blog', # 用户名
'PASSWORD': 'xxx', # 3.3中创建blog用户设置的密码
'HOST': 'xx.xx.xx.xx', # 生态版GaussDB弹性公网ip
'PORT': '8000', # GaussDB数据库端口
}
}

注意:修改后要记得保存。
5.4 初始化数据库表
进入django-dog-blog-main目录下:
cd django-dog-blog-main/
初始化数据库表:
python3 manage.py migrate

再次回到GaussDB云数据库的SQL查询界面,Schema选择blog,可以看到初始化的数据库表:

5.5 初始化admin登录用户
向auth_user表中插入数据,初始化登录用户:
INSERT INTO blog.auth_user (password,last_login,is_superuser,username,first_name,last_name,email,is_staff,is_active,date_joined) VALUES
('pbkdf2_sha256$260000$Z3UtLaQ8NRzYybNQdbVZxG$N/RLkprzi/XKTije/0b6naQXKQyFvCD8dLboA08H4Uc=','2025-08-20 17:24:51.629',true,'admin','admin','admin','123@qq.com',true,true,'2025-08-20 16:43:33.724');

注意:blog.auth_user中的blog要和数据库的Schema保持一致。
5.6 启动博客系统
进入django-dog-blog-main目录下:
cd django-dog-blog-main/
启动博客系统:
python3 manage.py runserver 0.0.0.0:8080

点击 Open in Browser:

点击登录,输入用户名:admin,密码:Gauss#123:

点击分类,分别创建类别和创建标签:

输入类别名称:GaussDB,点击提交按钮:

输入标签名称:空间案例,点击提交按钮:

点击创作按钮,输入以下信息:
类别:GaussDB;
标题:GaussDB博客系统;
正文:开发者空间GaussDB的极简博客系统。

博客展示:

至此,基于远程开发环境部署Django与开发者空间GaussDB的极简博客系统案例已全部完成。
六、反馈改进建议
如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
6万+

被折叠的 条评论
为什么被折叠?



