【发布时间】:2019-12-05 23:00:01
【问题描述】:
我想从一个 Django 插入另一个域的另一个 Django 数据库,在 auth_user 表中插入一个正确的密码文本。
我试图生成一个加密函数,但我不知道 Django 如何将密码从纯文本生成到存储在数据库中的散列密码。
postgres_insert_query = """
INSERT INTO auth_user (username, first_name, last_name, email, password) VALUES (%s,%s,%s,%s,%s)
"""
record_to_insert = (username, first_name, last_name, email, password)
cursor.execute(postgres_insert_query, record_to_insert)
connection.commit()
cursor.close()
【问题讨论】:
-
不使用 Django 的 ORM 是否有特定原因。它具有对设置密码的内置支持。
-
@WillemVanOnsem 是的,我的 Django 应用程序从另一个 Django 应用程序生成/编辑/删除用户。不是同一个应用的settings.py中有多个数据库的情况。
-
那么我认为最好调用管理命令来创建一个用户,例如
django-createuser。 -
@WillemVanOnsem 这个工具对服务器中的 shell 脚本生成用户很有用,但是我的 Django 应用程序在一个服务器中,而我插入用户的另一个 Django 应用程序被放置在其他服务器中。
-
哈希算法不是固定的。您可以通过更改
PASSWORD_HASHERS设置来更改它:docs.djangoproject.com/en/2.2/topics/auth/passwords/…,因此即使您设法让它工作,稍后它也可能会失败,因为设置已更改。
标签: django python-3.x postgresql django-models