• python独立脚本应用Django项目的环境


    一、需求说明

      一直用 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文件添加到环境变量中,mcloud.settings中的mcloud是我的项目名

    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()

      4、就可以在你的脚本中直接使用Django项目的环境了

     

        

     

  • 相关阅读:
    深度学习【DL介绍、神经网络介绍】
    剑指 Offer 16. 数值的整数次方
    中期国际2.19黄金市场分析:美国通胀数据火热,黄金面临高利率削弱的挑战
    openGauss学习笔记-71 openGauss 数据库管理-创建和管理普通表-删除表中数据
    MMDetection库中的一些模块介绍
    有效的单元测试
    Python基础入门篇【19】--python中的流程控制之循环控制:for循环
    AnsibleFATE部署过程
    物联网开发笔记(10)- 使用Wokwi仿真micropython on ESP32开发板实现音乐播放
    【ROS】服务通信、话题通信的应用
  • 原文地址:https://www.cnblogs.com/Se7eN-HOU/p/17655058.html