一、需求说明

  一直用 Django 在开发一个网站项目,其中的注册用户和登录,都是使用Django自带的认证系统。主要是对密码的加密,在注册或者登录的时候,前端传递多来的密码,我会使用Django的set_password()方法在加密一次

    

  经过加密后的数据库中的数据样子如下:

    

  现在我有另外一个需求,需要单独写一个脚本,独立于这个Django项目,要实现的功能,就是在通过我单独写的python3,让用户通过这个脚本可以快读的创建Django项目中的用户。其实需求很简单,就是通过python脚本,往Django数据库中写入数据而已,但是有一个困难点,就是密码要借用Django中的环境,不是说自己按照django的加密规则,自己加密就行了,因为这个加密的过程中,使用到Django项目中settings中的加盐参数,所以必须还要获取Django项目的运行环境。

二、源码解释

  为什么我使用的set_password(), 加密之后就必须要获取原来Django项目的环境呢?我们看一下源码就明白了了

    

  在set_password()函数内部有调用了make_password()函数,我们继续看源码

    

  因为在注册的时候的密码有加盐,登录的时候,需要同样的加盐规则,所以这里我在注册账号和密码的时候,需要使用Django项目中的这个环境

三、独立脚本引用Django环境

  1、import django

  2、import os

  3、将项目路径添加到系统路径下

# 将项目目录添加到系统路径下
sys.path.append('/home/root/projects/mcloud/src/backend')

  说明:我的项目路径就是:/home/root/projects/mcloud/src/backend,各位替换成自己的路径即可

    

  4、将Django项目中的settings文件添加到环境变量中

os.environ['DJANGO_SETTINGS_MODULE'] = "mcloud.settings"

  5、django 启动

django.setup()

四、案例

  1、导入需要的django模块

from django.contrib.auth import authenticate
from django.contrib.auth.hashers import make_password

  2、使用Django 环境创建我需要的密码

 password = make_password(input_password)

  3、在使用这个密码就可以写入数据库,正常登录了。

五、抛转引玉

  我这里只是一个python脚本使用Django环境的案例,万变不离其宗,主要就是

  1、将Django项目路径加入到系统环境,方便脚本找到项目的路径

  2、将Django项目中的settings文件添加到环境变量中

  3、django.setup()

    

python独立脚本应用Django项目的环境的更多相关文章

  1. Python外部脚本调用Django项目Model表

    在实际生产中有时候会出现这种情况,原本运行了一个Django项目,后面又需要一些外部脚本进行辅助,而这些脚本又不希望集成到项目当中,但是又需要用到Django项目的Model,这时候是无法像在项目当中 ...

  2. django项目上线环境部署

    django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...

  3. [python]基于windows搭建django项目

    1.首先我的环境用到的库版本如下,若下载直接pip即可 pip3 install Django==2.0.6pip3 install djangorestframework==3.8.2pip3 in ...

  4. python的web框架---Django项目

    Django项目之会议室预预订: 界面效果展示: 1.创建超级管理员,实现预定界面功能 2.预定界面: (一)基于pymysql设计数据表结构,理清前后端与用户交互逻辑.(用户表,会议室表,预定内容存 ...

  5. 【python】django-celery 实现django项目定时任务

    官方:https://pypi.python.org/pypi/django-celery/ 参考:http://www.weiguda.com/blog/73/ 参考:http://www.liao ...

  6. python命令行运行django项目, can't open file 'manage.py' 问题解决

     找到manage.py的绝对路径即可运行

  7. 配置django的环境实现外部脚本调用django中的模型类

    通过导入os模块,os设置django的settings文件,配置好django项目的环境,然后执行django.set_up()使环境生效,然后就可以导入模型类,使用增删改查

  8. Django项目实践4 - Django网站管理(后台管理员)

    http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...

  9. Django项目实践4 - Django站点管理(后台管理员)

    http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...

  10. Django入门第一步:构建一个简单的Django项目

    Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ...

随机推荐

  1. 2021-10-28:打家劫舍 II。你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装

    2021-10-28:打家劫舍 II.你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装 ...

  2. vue全家桶进阶之路21:Vue Loader 打包单位件组件

    Vue Loader 是一个 webpack 插件,它允许在单个文件中定义 Vue 组件,并将其包装为 CommonJS 模块,以便在应用程序中使用.使用 Vue Loader 打包的组件被称为单文件 ...

  3. Java程序设计复习提纲(下:图形界面)

    目录 上:Java程序设计复习提纲(上:入门语法) - 孤飞 - 博客园 (cnblogs.com) 基本语法与编译运行 数据类型和关键字 常用语法 数组与字符串 异常处理 中:Java程序设计复习提 ...

  4. 人工智能导论——口罩佩戴检测详解(附带MTCNN论文精读)

    人工智能导论--口罩佩戴检测详解(附带MTCNN论文精读) 一.问题重述 随着人类的科技不断进步,病毒也在随之更新迭代:在19年席卷全球的新冠肺炎疫情给人们的生活带来了极大的灾难,造成了无数的人因此失 ...

  5. 从 pheatmap 无缝迁移至 ComplexHeatmap

    pheatmap 是一个非常受欢迎的绘制热图的 R 包.ComplexHeatmap 包即是受之启发而来.你可以发现Heatmap()函数中很多参数都与pheatmap()相同.在 pheatmap  ...

  6. 从0搭建Vue3组件库(九):VitePress 搭建部署组件库文档

    VitePress 搭建组件库文档 当我们组件库完成的时候,一个详细的使用文档是必不可少的.本篇文章将介绍如何使用 VitePress 快速搭建一个组件库文档站点并部署到GitHub上 安装 首先新建 ...

  7. 拥抱jsx,开启vue3用法的另一种选择🔥🔥

    背景 公司高级表单组件ProForm高阶组件都建立在jsx的运用配置上,项目在实践落地过程中积累了丰富的经验,也充分感受到了jsx语法的灵活便捷和可维护性强大,享受到了用其开发的乐趣,独乐乐不如众乐乐 ...

  8. python3使用pjsua进行呼叫测试

    环境:CentOS 7.6_x64    Python版本 :3.9.12 pjsip版本:2.13   之前写过一篇CentOS7环境编译python3.9版本pjsua的文章: https://w ...

  9. python接口自动化封装导出excel方法和读写excel数据

    一.首先需要思考,我们在页面导出excel,用python导出如何写入文件的 封装前需要确认python导出excel接口返回的是一个什么样的数据类型 如下:我们先看下不对返回结果做处理,直接接收数据 ...

  10. UDP 编程不能太随意

    UDP 相比 TCP 虽然是是无连接的,看似发送接收都很随意,但是在发送--接收过程中,仍然有些问题需要重视.在整个通讯过程中至少有两点需要注意,一方面要防止发送方的一厢情愿,另一方面是在允许的条件下 ...