在django项目中,我们会使用settings.py中定义一些参数,比如:

SECRET_KEY = '!pv4o62*84k9s(u$y%k5$e8vura2_w)y5aa^-(e@4hk&'
DEBUG = True
ALLOWED_HOSTS =['*']
GITHUB_WEBHOOK_KEY='9tXDogwdEUBLJwwgczgfaeNAAbQDXIDo4Yth' WX_APP_SERCRET='b07f584b45cafc8ba28909211'

并且这些参数会随着settings.py上传到github上,这样很不安全,故我们不能将这些参数上传,所以只能想办法将这些机密参数从settings.py中分离出来。

在python中提供了python-decouple:

1.在Django项目的虚拟环境中安装python-decouple

pip install python-decouple

2.添加.env或者.ini文件,并把配置信息写入这个文件

参考目录:https://pypi.org/project/python-decouple/

因为我使用的是.env文件,创建.ini文件的可以参考上面的链接

#a.在Django项目的根目录下,创建.env文件,添加配置信息:

SECRET_KEY = !pv4o62*84k9s(u$y%k5$e8vura2_w)y5aa^-(e@4hk&
DEBUG = True
ALLOWED_HOSTS =*
GITHUB_WEBHOOK_KEY=9tXDogwdEUBLJwwgczgfaeNAAbQDXIDo4Yth WX_APP_SERCRET=b07f584b45cafc8ba28909211

注:不能在每个字符串上加''

#b.将.env添加到.gitignore

因为不能将这个文件传到服务器上,所以必须在.gitignore中添加/.env

/.env

注:如果.gitignore文件不能生效(commit时仍然将.env文件提交了),此时可以执行:

#cmd 进入.gitignore所在的目录下,删除缓存
git rm -r --cached .
git add .
git commit -m 'update .gitignore'

.gitignore 只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交.

3.在settings.py中调用.env中的变量

from decouple import config,Csv
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = config('SECRET_KEY')
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = config('DEBUG',cast=bool)
ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv())
#微信小程序相关参数
WX_APP_SERCRET=config('WX_APP_SERCRET')
# github webhook key
GITHUB_WEBHOOK_KEY=config('GITHUB_WEBHOOK_KEY')

config中有个参数 cast,在官方文档上是这么写的:

By default, all values returned by decouple are strings, after all they are read from text files or the envvars.
However, your Python code may expect some other value type,
for example: Django’s DEBUG expects a boolean True or False. Django’s EMAIL_PORT expects an integer. Django’s ALLOWED_HOSTS expects a list of hostnames. Django’s SECURE_PROXY_SSL_HEADER expects a tuple with two elements,
the name of the header to look for and the required value.

cast表示相应的返回值类型,但只能返回常用的基本类型,比如要想返回一个列表,那只能自定义一个lambda函数:

config('ALLOWED_HOSTS', cast=lambda v: [s.strip() for s in v.split(',')])

但是这个写法太复杂了,在decouple中已经定义好了相应的函数Csv():

ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv())

参考链接:https://pypi.org/project/python-decouple/#id12

4.提交本地修改到github,服务器pull代码

在提交本地代码之前,先将本地的虚拟环境的配置导出来,早pycahrm中打开Terminal,此时显示已经是在项目的根目录下,并且在虚拟环境中,执行

pip freeze >requirements.txt

这样就生成了配置清单,并随后将会被上传值github

git add .
git commit -m 'update'
git push

登录服务器,将github刚刚更新的代码pull下来,进入虚拟环境,然后进入Django项目的根目录下,看到requirements.txt文件,执行:

pip install -r requirements.txt

导入安装更新的包。

5.将.env直接上传到服务器

因为已经将相应的变量通过decouple从settings.py中分离出来了,不用上传github,但是服务器上需要使用这些变量,故需将.env文件上传至服务器的相应目录,保证了这些数据的安全性。

使用scp命令将本地文件上传至阿里云服务器:

scp 本地文件 登录名@服务器ip地址:Django项目根目录下

比如我的上传.env文件到服务器的Django项目根目录下的命令:

scp /e/mysite/.env root@182.92.119.50:/home/mysite/

重启服务器就可以了

service apache2 restart

django使用python-decouple相关推荐

  1. python 创建json_使用Django和Python创建Json response的方法

    使用jQuery的.post提交,并期望得到多个数据,Python后台要使用json格式. 不指定datatype为json,让jquery自行判断数据类型.(注:跨域名请求数据,则使用 jsonp字 ...

  2. 计算机毕业设计django基于python学生考试成绩数据分析与可视化系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着社会的逐步发展,计算机网络技术对人们工作.生活影响是全面且深入的.基于计算机网络的管理系统越来越受到人们的欢迎,人们可以通过基于网络的管理系统进行实时数据信息查询.管理数据信息等,给人们 ...

  3. 计算机毕业设计django基于python企业资产管理系统

    项目介绍  随着计算机技术的发展和网络的普及.采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的企业资产管理系统的平台,这样可以有效地解决数据 ...

  4. 计算机毕业设计django基于python的学生选课系统-高校教务管理系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 本论文主要论述了如何使用Python技术开发一个高校教务管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述高校教务管 ...

  5. 计算机毕业设计django基于python商品比价平台

    项目介绍 随着计算机技术的发展和网络的普及.采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的商品比价系统的平台,这样可以有效地解决数据商品比 ...

  6. 计算机毕业设计django基于python的汽车租赁系统

    项目介绍  本论文主要论述了如何使用Python技术开发一个汽车租赁系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述高校教务管理 ...

  7. 计算机毕业设计django基于python智能在线考试阅卷系统

    项目介绍 随着计算机多媒体技术的发展和网络的普及.采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的基于python的学校对在线考试阅卷系统的 ...

  8. django基于Python的HOME宠物领养+购物商城中心小程序#毕业设计

    开发环境 项目编号:django基于Python的HOME宠物领养中心小程序#毕业设计 开发语言:Python python框架:django 软件版本:python3.7/python3.8 数据库 ...

  9. 计算机毕业设计django基于python精品课程在线学习系统

    项目介绍  在各学校的教学过程中,租房系统是一项非常重要的事情.随着计算机多媒体技术的发展和网络的普及.采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配 ...

  10. 计算机毕业设计django基于python仓库管理系统

    项目介绍  随着计算机技术的发展和网络的普及.采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的仓库管理系统的平台,这样可以有效地解决数据仓库 ...

最新文章

  1. 图解:轻松看懂机器学习十大常用算法
  2. Sharepoint ListTemplateId
  3. 我眼中的Linux设备树(一 概述)
  4. php的mpdf开发实例,mpdf自动分页加页码的方法
  5. android data binding jetpack III 绑定一个方法
  6. 这届清华学生太难了!C++作业难到上热搜!
  7. 0074 几道面试题
  8. Xamarin Android Webview中JS调用App中的C#方法
  9. 过春节,坐汽车回家的朋友,注意了。。
  10. 修改 Docker 的镜像存储位置
  11. mysql2个字段还会map_通过注解实现MyBatis将sql查询结果的两个字段分别作为map的key,value...
  12. 黑马程序员—银行调度系统
  13. 我用一张图彻底了解 SpringAOP 切面表达式
  14. Excel表格匹配合并
  15. unity如何往下挖地形_Unity 地形
  16. 迅为4418开发板-驱动-以模块的方式编译内核驱动
  17. Python 练习实例100-39,有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
  18. JAVA随机生成6位数,不足补0
  19. vb.net Encoding类 编码解码
  20. leetcode简单之577.员工奖金

热门文章

  1. foxmail代理设置方法
  2. 【解决】Jupyter Notebook 内核似乎挂掉了,它很快将自动重启。
  3. rl滤波器原理_RL低通滤波器的原理是什么
  4. dfs应用,迷宫地图解救小哈
  5. EBS 12.1.3 应用打补丁操作及问题处理
  6. 电子书格式转换 Epubor Ultimate 7 附注册机
  7. 为什么我不推荐去SAP培训机构参加培训?
  8. 11年电赛综合测评——单运放三角波发生器
  9. SD卡、TF卡、MMC卡以及eMMC芯片的介绍
  10. Chrome浏览器浅析