基于远程开发环境部署Django与开发者空间GaussDB的实践应用
本案例借助开发者空间云开发环境部署Django项目,并与开发者空间提供的免费GaussDB数据库实例对接,完成一个Web应用构建。通过实际操作,让大家深入了解如何利用 Django 开发并部署一个 Web 应用。
一、概述
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元。
资源名称 | 规格 | 单价(元) | 时长(分钟) |
---|---|---|---|
华为开发者空间 - 云开发环境 | 鲲鹏通用计算增强型 kc1 | 2vCPUs | 4G | HCE2.0 | 免费 | 40 |
华为开发者空间 - 生态版GaussDB | 单副本集中式版 | 4 vCPUs | 16G | HCE OS 64bit (200GB) | 免费 | 40 |
弹性公网IP | 按流量计费 5Mbit/s | 0.8元/GB | 40 |
最新案例动态,请查阅 《基于远程开发环境部署Django与开发者空间GaussDB的实践应用》。小伙伴快来领取华为开发者空间-云开发环境实操吧!
二、案例准备工作
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开发,多数都是构建一个大型应用程序,并且不希望各种组件的各种版本之间相互冲突,所以需要设置一个虚拟环境。
先需要更新下载源。执行如下命令
sudo yum -y update
sudo yum -y upgrade
pip3 install virtualenv #安装virtualenv
python3 -m venv myenv #创建虚拟环境
source myenv/bin/activate #激活环境

环境激活后,用户名前会有(myenv)字样,如上图所示。
3.2 部署Django组件
安装之前,需要更新下pip。
python3 -m pip install --upgrade pip

用python3自带的安装工具pip3,安装组件。
pip3 install django==3.2
注:安装django3.2版本,因为默认安装是django4.2.23,对PG内核版本要求至少在pg12以上,但GaussDB的pg内核是9.204,不满足django4.2.23需求。
可通过以下命令检测Django是否安装成功
python
import django
django.__version__

3.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/xxx/GaussDB_driver/Centralized/Hce2.0_arm_64/lib,读者根据自己实际情况做修改
export LD_LIBRARY_PATH=/home/xxx/GaussDB_driver/Centralized/Hce2.0_arm_64/lib:$LD_LIBRARY_PATH
- 在创建数据库连接之前,需要先加载如下数据库驱动程序:
import psycopg2
注意:如果引入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。
mkdir ~/myprojdir
django-admin startproject myproj ~/myprojdir

项目myproj创建完成后,项目目录中应该包含以下内容:

3.5 创建myproj项目的Web应用
在myproj的项目目录里,创建一个应用,例如本例中创建一个djangoapp的应用
cd myprojdir
django-admin startapp 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链接的登录用户。
create user myuser with sysadmin password 'GaussDB@123';

4.3 Django项目端配置对接GaussDB数据库
进入创建的项目目录~/myprojdir/myproj里,其中setting.py就是Django项目的配置文件。
vim ~/myprojdir/myproj/settings.py
配置字段如下(根据实际设置的GaussDB链接用户修改对应参数):
DATABASES = {
'default' : {
'ATOMIC_REQUESTS' : 'True',
'ENGINE' : 'django.db.backends.postgresql_psycopg2',
'NAME' : 'postgres', #数据库名
'USER' : 'myuser', #用户名
'PASSWORD' : 'GaussDB@123', #密码
'HOST' : '139.9.68.119', #生态版GaussDB弹性公网ip
'PORT' : '8000', #GaussDB数据库端口
}
除了DATABASES的配置项,还要在ALLOWED_HOSTS列表中,添加GaussDB服务器的IPv4的地址。Web应用才能允许GaussDB数据库的访问。
ALLOWED_HOSTS = ['139.9.68.119','localhost']
4.4 注册APP ---- djangoapp
在settings.py中,INSTALLED_APPS数组,添加app名称。如下:
注意:图片换成代码

4.5 验证myproj项目与数据库GaussDB对接结果
cd ~/myprojdir
python3 manage.py migrate

此时可以GaussDB数据库中,看到已经有4张表迁移到GaussDB里。
五、启动Web服务并进行业务操作
5.1 创建Django的WEB服务
在IDE终端中执行如下命令启动Web应用,部署端口为8082(创建云开发环境时放开的端口都可指定,依据自身端口开放情况选择即可):
python3 manage.py runserver 0.0.0.0:8082
注:此处的0.0.0.0就是设置ALLOWED_HOSTS里的localhost地址

Web应用启动后,如果想通过本地访问Web页面,需要做本地和云开发环境的端口映射,参考开发者空间 - 云开发环境使用指导-第4章2小节做端口映射
hdspace devenv start-tunnel --instance-id=xxx --remote-port=8082 --local-port=1233
端口映射完成后可通过如下地址本地访问Django的web网页,如下图所示:
http://localhost:1233/admin

5.2 创建用户登录Web应用
在IDE的myprojdir目录下创建create_user.py,执行py文件完成用户创建:
create_user.py文件内容如下:
from django.contrib.auth.models import User
user = User(username='test',email='[email protected]')
user.first_name='test'
user.last_name='test'
user.is_superuser = True
user.is_active = True
user.is_staff = True
user.password = 'test123'
user.save()

执行create_user.py文件,可查看GaussDb数据库中用户表中新增一条记录:

但此时用户密码是明文存放在数据库中的,不符合django规范,还不能使用该用户登录admin管理后台。
通过如下命令更改test用户密码,更改后可登录Web页面,登录页面如下:
python manage.py changepassword test

5.3 创建表Question和Choice
在IDE中djangoapp应用里编辑model.py文件,添加表Question和Choice。
添加如下内容:
from django.db improt models
class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField("date published")
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete = models.CASCADE)
choice_text = models.CharField(max_length = 200)
votes = models.IntegerField(default = 0)
执行如下命令,创建将两张表Question和Choice同步到GaussDB数据库的任务:
python3 manage.py makemigrations djangoapp

注意:如果迁移djangoapp项目时报libpq.so找不到,设置export LD_LIBRARY_PATH=/home/xxx/GaussDB_driver/Centralized/Hce2.0_arm_64/lib:$LD_LIBRARY_PATH,其中xxx替换成自己的用户名
再执行如下命令,创建将表事务同步到GaussDB数据库的SQL:
python3 manage.py sqlmigrate djangoapp 0001
如果执行命令过程中报错,可以执行如下命令检查错误原因
python3 manage.py check

如果没有报错,则执行如下命令,执行迁移任务:
python3 manage.py migrate

待迁移完成后,GaussDB数据库可看到Question和Choice两张表:

5.4 Django项目从GaussDB读写表数据
在IDE myprojdir目录下创建py文件operate_question.py,完成对数据表djangoapp_question的增改查等操作:
operate_question.py文件内容如下:
from djangoapp.models import Choice, Question
Question.objects.all()
from django.utils import timezone
q = Question(question_text="What's new?", pub_date=timezone.now())
q.save()
q.id
q.question_text
q.pub_date
q.question_text = "What is up?"
q.save()
Question.objects.all()
quit()
执行operate_question.py文件,可看到Question数据表中新增一条记录:


至此本案例关于在开发者空间–远程开发环境中部署Django与开发者空间生态版GaussDB实践操作完毕。
五、反馈改进建议
如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
更多推荐
所有评论(0)