python中运用django_【Django】在项目中使用python
将博客代码提交到仓库的时候,也许不经意间会将你不想泄漏的信息(比如数据库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相关推荐
- Django Python:完整的BUNDLE + Django真实项目2021
Django和python Bundle:从学习python的所有基础知识到高级python再到UI设计TKINTER,然后是Django 你会学到: 学习编程的基础知识 学习Python编程语言 学 ...
- IntelliJ IDEA 如何知道项目中的模块数据_如何从项目源中选择模块加入当前项目中(添加模块)_如何移除项目中的模块(移除模块/删除模块)
文章目录 IDEA 如何获取项目的模块数据 从项目源中选择模块加入当前项目中 如何移除项目中的模块 方式一,选择模块的根目录(Content Root),鼠标右键 Remove 方式二,打开[项目结构 ...
- Java中的properties文件中的key不能使用项目中的接口名和Java文件名
Java中的properties文件中的key不能使用项目中的接口名和Java文件名,否则在反射生成实体类的时候会出现报错的情况.
- python安装django模块_在您的(Django)项目中使用setup.py
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 最近一位客户问我为什么我们创建的Django项目的根目录下都有一个setup.py.其他很多项目没有set ...
- pythondjango项目集成_[Python]将Wagtail整合到Django2项目中
Django是Python主流的Web框架之一,目前主要版本是Django 2.1,但是很多扩展都是基于Django 1.x.最近想做个简单的Web发布,选择了Wagtail,因为其他两个主流的cms ...
- python支付程序源码_python项目中实现支付宝网页支付
支付流程 在一次项目中需要引入支付宝接口实现支付宝支付,使用场景如下: 用户在我方商户系统中选择了购买商品,我方商户系统生成一张支付订单,用户点击订单的支付按钮后,页面会跳转到一个支付二维码的界面. ...
- python日期迭代_计算敏捷项目中迭代时间安排(Python3版)
节奏是敏捷开发的核心,保持合理固定的节奏,能有效的促使各个环节协调统一,高效运行.针对产品的不同周期,方案有所不同. 迭代开发.jpg 通常,我们需要在一个时间盒中去分配一个项目中不同阶段的时间,在项 ...
- python基础教程:Django框架的中的setting.py文件说明详解
这篇文章主要介绍了Django框架的中的setting.py文件说明详解,这个文件包含了所有有关这个Django项目的配置信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.加载数据库,数据库 ...
- 【Django】项目中调用深度学习模型model.predict()(Django两种启动方式runserver和uwsgi的区别)
目录 问题 测试 解决方法 Django两种启动方式runserver和uwsgi的区别 问题 部署含有深度学习模型的Django项目的uWSGI.Nginx服务器的时候,所有模块都可以正常运行,也可 ...
- 前端报错如何在服务器中显示,详解Vue项目中出现Loading chunk {n} failed问题的解决方法...
最近有个Vue项目中会偶尔出现Loading chunk {n} failed的报错,报错来自于webpack进行code spilt之后某些bundle文件lazy loading失败.但是这个问题 ...
最新文章
- 中国工程院院士陈左宁详述:人工智能模型和算法的七大发展趋势
- Servlet的初始化参数
- 让你眼花缭乱的JS代码~~
- 支付宝2018年账单发布,更注重用户隐私保护
- python多进程的使用方法
- python归一化处理_详解python实现数据归一化处理的方式:(0,1)标准化
- python中转义字符怎么用_python中的转义字符i
- 前端基础6:背景常用属性和定位以及BFC
- liunx 下压缩解压zip文件
- vue +element 导出多级表头(标题)
- 基于mAppWidget实现手绘地图--索引DEMO
- MyBatis官方文档——SQL语句构建及日志部分
- 开源 CMS系统 / SNS系统 / BBS系统
- Maven的下载安装和环境配置
- dll中封装MFC(VC2012)资源--自定义一个复用的登录界面
- 大数据之实时流处理常用框架
- 《畅玩NAS》 使用树莓派打造一个NAS服务器
- git 拉取最新代码覆盖本地
- CCF201609-3 炉石传说 (100分)
- Python爬取张家界风景美图