from django.contrib.auth.hashers import make_password
时间: 2023-12-10 20:42:23 浏览: 29
这是 Django 提供的用于密码加密的函数,它接收一个字符串参数并返回一个加密后的密码字符串。该函数使用 PBKDF2 算法进行加密,可以确保密码的安全性。
使用示例:
```
password = 'my_password'
hashed_password = make_password(password)
```
默认情况下,该函数会使用随机生成的盐值对密码进行加密,以增加密码的安全性。可以通过传递 salt 参数来指定自定义的盐值。
需要注意的是,该函数只用于密码加密,不能用于密码比较。在验证密码时,应该使用 Django 提供的 check_password 函数。
相关问题
django 中check_password 的用法
在Django中,check_password()是一个用于验证密码的方法。它用于检查用户提供的密码是否与存储在数据库中的密码匹配。
具体用法如下:
1. 导入check_password方法:
```python
from django.contrib.auth.hashers import check_password
```
2. 使用check_password()方法验证密码:
```python
password = "user_password" # 用户提供的密码
stored_password = "stored_password" # 存储在数据库中的密码
is_password_matched = check_password(password, stored_password)
```
如果提供的密码与存储在数据库中的密码匹配,is_password_matched将返回True,否则返回False。
注意:存储在数据库中的密码通常是经过加密的,Django使用哈希算法对密码进行加密以保护用户密码的安全性。因此,check_password()方法会自动使用正确的哈希算法来验证密码。
写代码:Django DRF修改admin 密码api
以下是Django DRF修改admin密码的API代码示例:
```python
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
@api_view(['PUT'])
def change_admin_password(request):
try:
user = User.objects.get(username='admin')
password = request.data.get('password')
user.password = make_password(password)
user.save()
return Response({'message': 'Admin password updated successfully'}, status=status.HTTP_200_OK)
except User.DoesNotExist:
return Response({'error': 'Admin user does not exist'}, status=status.HTTP_404_NOT_FOUND)
```
使用PUT请求访问该API,并将新密码作为请求体发送。请注意,此示例假定您的管理员用户名为“admin”。如果不是,请将其替换为您的管理员用户名。