将博客代码提交到仓库的时候,也许不经意间会将你不想泄漏的信息(比如数据库url,密码,密钥,调试状态,电子邮件主机,允许的主机等等)暴露。所以我们需要考虑,将我们的信息保存在安全的地方(比如直接保存在服务器上,而不是github)。

为了达到这个目的,我们将会用到一个模块,python-decouple,它可以将代码中的设置参数分离,保存在另外一个文件(这个文件就可以直接保存在服务器,而不提交到仓库),我们将这个文件称为环境文件。

###安装

执行pip install python-decouple

###用法

打开settings.py,一般可以看到有如下代码:

SECRET_KEY = '3izb^ryglj(bvrjb2_y1fZvcnbky#358_l6-nn#i8fkug4mmz!'

DEBUG = True

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.postgresql_psycopg2',

'NAME': 'HELLO_DJANGO',

'USER': 'U_HELLO',

'PASSWORD': 'hA8(scA@!fg3*sc&xaGh&6%-l<._>

'HOST': '127.0.0.1',

'PORT': '',

}

}

首先我们在项目根目录下(即和manage.py同一目录)创建一个环境文件.env(或者.ini文件,具体参考文档),保存如下内容

SECRET_KEY=3izb^ryglj(bvrjb2_y1fZvcnbky#358_l6-nn#i8fkug4mmz!

DEBUG=True

DB_NAME=HELLO_DJANGO

DB_USER=U_HELLO

DB_PASSWORD=hA8(scA@!fg3*sc&xaGh&6%-l<._>

DB_HOST=127.0.0.1

记得将.env添加到.gitignore,确保环境文件不会提交到仓库。

修改settings.py,首先导入模块

import os

#导入python-decouple模块

from decouple import config

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

SECRET_KEY = config('SECRET_KEY')

DEBUG = config('DEBUG', cast=bool)

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.postgresql_psycopg2',

'NAME': config('DB_NAME'),

'USER': config('DB_USER'),

'PASSWORD': config('DB_PASSWORD'),

'HOST': config('DB_HOST'),

'PORT': '',

}

}

####传递数据

先来看两行代码

DEBUG = config('DEBUG', cast=bool)

EMAIL_PORT = config('EMAIL_PORT', cast=int)

函数config()传递两个参数,一个是传递值的变量名,一个是传递值的类型。通常来说,我们从文件读取的数据会被保存为字符串,这时候,cast参数就派上用场了。在函数config(),cast参数可以指定读取的数据的类型。看回上面第一行代码,从环境文件读取到的DEBUG的值被指定为布尔值了。

对于 ALLOWED_HOSTS

ALLOWED_HOSTS=.localhost, .herokuapp.com

我们可以指定其cast参数为

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

这样看起来很复杂,我们可以使用这个模块自带的Csv函数。

from decouple import config, Csv

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

####默认值

如果有一个值为定义在环境文件中(即在环境文件中没有这个值),我们可以向config()传递一个额外的参数来指定默认值。

DEBUG = config('DEBUG', default=True, cast=bool)

####覆盖

有些时候你想不通过环境文件改变参数,你可以覆盖环境文件的变量。因为环境变量(os.environ)优先级高于环境文件变量:DEBUG=True python manage.py

注意,Decouple总是按此顺序进行赋值:

环境变量;

环境文件:.ini或.env文件;

传递给配置的默认参数。

###将环境文件上传到服务器

这里我们主要用到xshell,lrzsz。首先用xshell连接到服务器(具体百度下就知道了)。

然后执行命令yum install -y lrzsz进行lrzsz的安装,接着执行sudo rz命令本地上传文件到服务器,在弹出的文件选择框选择我们的环境文件即可。

如果需要下载服务器的文件,执行sz filename。

python中运用django_【Django】在项目中使用python相关推荐

  1. Django Python:完整的BUNDLE + Django真实项目2021

    Django和python Bundle:从学习python的所有基础知识到高级python再到UI设计TKINTER,然后是Django 你会学到: 学习编程的基础知识 学习Python编程语言 学 ...

  2. IntelliJ IDEA 如何知道项目中的模块数据_如何从项目源中选择模块加入当前项目中(添加模块)_如何移除项目中的模块(移除模块/删除模块)

    文章目录 IDEA 如何获取项目的模块数据 从项目源中选择模块加入当前项目中 如何移除项目中的模块 方式一,选择模块的根目录(Content Root),鼠标右键 Remove 方式二,打开[项目结构 ...

  3. Java中的properties文件中的key不能使用项目中的接口名和Java文件名

    Java中的properties文件中的key不能使用项目中的接口名和Java文件名,否则在反射生成实体类的时候会出现报错的情况.

  4. python安装django模块_在您的(Django)项目中使用setup.py

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 最近一位客户问我为什么我们创建的Django项目的根目录下都有一个setup.py.其他很多项目没有set ...

  5. pythondjango项目集成_[Python]将Wagtail整合到Django2项目中

    Django是Python主流的Web框架之一,目前主要版本是Django 2.1,但是很多扩展都是基于Django 1.x.最近想做个简单的Web发布,选择了Wagtail,因为其他两个主流的cms ...

  6. python支付程序源码_python项目中实现支付宝网页支付

    支付流程 在一次项目中需要引入支付宝接口实现支付宝支付,使用场景如下: 用户在我方商户系统中选择了购买商品,我方商户系统生成一张支付订单,用户点击订单的支付按钮后,页面会跳转到一个支付二维码的界面. ...

  7. python日期迭代_计算敏捷项目中迭代时间安排(Python3版)

    节奏是敏捷开发的核心,保持合理固定的节奏,能有效的促使各个环节协调统一,高效运行.针对产品的不同周期,方案有所不同. 迭代开发.jpg 通常,我们需要在一个时间盒中去分配一个项目中不同阶段的时间,在项 ...

  8. python基础教程:Django框架的中的setting.py文件说明详解

    这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...

  9. 【Django】项目中调用深度学习模型model.predict()(Django两种启动方式runserver和uwsgi的区别)

    目录 问题 测试 解决方法 Django两种启动方式runserver和uwsgi的区别 问题 部署含有深度学习模型的Django项目的uWSGI.Nginx服务器的时候,所有模块都可以正常运行,也可 ...

  10. 前端报错如何在服务器中显示,详解Vue项目中出现Loading chunk {n} failed问题的解决方法...

    最近有个Vue项目中会偶尔出现Loading chunk {n} failed的报错,报错来自于webpack进行code spilt之后某些bundle文件lazy loading失败.但是这个问题 ...

最新文章

  1. 中国工程院院士陈左宁详述:人工智能模型和算法的七大发展趋势
  2. Servlet的初始化参数
  3. 让你眼花缭乱的JS代码~~
  4. 支付宝2018年账单发布,更注重用户隐私保护
  5. python多进程的使用方法
  6. python归一化处理_详解python实现数据归一化处理的方式:(0,1)标准化
  7. python中转义字符怎么用_python中的转义字符i
  8. 前端基础6:背景常用属性和定位以及BFC
  9. liunx 下压缩解压zip文件
  10. vue +element 导出多级表头(标题)
  11. 基于mAppWidget实现手绘地图--索引DEMO
  12. MyBatis官方文档——SQL语句构建及日志部分
  13. 开源 CMS系统 / SNS系统 / BBS系统
  14. Maven的下载安装和环境配置
  15. dll中封装MFC(VC2012)资源--自定义一个复用的登录界面
  16. 大数据之实时流处理常用框架
  17. 《畅玩NAS》 使用树莓派打造一个NAS服务器
  18. git 拉取最新代码覆盖本地
  19. CCF201609-3 炉石传说 (100分)
  20. Python爬取张家界风景美图

热门文章

  1. opencv图像校正
  2. ANSI 标准是为了确保 C++ 的便携性
  3. Pytorch基础操作 —— 8. 张量转置操作
  4. 色即是空之临时演员[韩国]
  5. ERP与MES集成技术在服装行业中的应用
  6. java后台提供ios微信支付接口
  7. IP电话系统和VoIP系统使用指南
  8. shader拖尾_u3d拖尾特效组件-------TrailRenderer
  9. freeMarker(十)——模板语言之内建函数
  10. FPGA控制TDC-GPX2时间间隔测量(一)