python - Django REST Framework:创建用户不需要密码,发送时密码不保存
问题描述
我正在使用 DRF 创建一个简单的注册/登录应用程序,并且在创建新用户时无法输入密码。
我一直潜伏在 SO 和文档中,但无法弄清楚这一点。
序列化程序.py
from django.contrib.auth.models import User
from rest_framework.serializers import HyperlinkedModelSerializer
class UserSerializer(HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email',
'groups', 'first_name', 'last_name',
'date_joined', 'last_login'
)
write_only_fields = ('password',)
视图.py
from django.contrib.auth.models import User, Group
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet
from rest_framework.generics import CreateAPIView
from .serializers import UserSerializer
class UserReadOnlyViewSet(ReadOnlyModelViewSet):
"""
API endpoint that allows users to be viewed.
"""
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class UserCreateView(CreateAPIView):
"""
API endpoint that allows users to be created.
"""
serializer_class = UserSerializer
网址.py
from django.urls import path, include
from rest_framework import routers
from .views import UserReadOnlyViewSet, UserCreateView
router = routers.DefaultRouter()
router.register(r'users', UserReadOnlyViewSet)
urlpatterns = [
path('', include(router.urls)),
path('signup/', UserCreateView.as_view()),
]
我能够在端点列出用户users/
| users/<pk>/
,并且我可以通过signup/
使用以下 JSON 数据发布到 来创建用户:
{
"username": "new_user",
"password": "12345678",
"email": "fulano@dominio.com"
}
我还可以通过仅username
在请求正文中发送来创建用户,并且我需要密码,就像用户名一样。
所以,总而言之,我遇到的问题是
- 发帖时不需要密码
signup/
- 当我发送密码时没有保存,既不是散列也不是纯文本。
谢谢你。
解决方案
推荐阅读
- python - 如何在 nodejs 子进程中使用 python 脚本创建文件?
- python - Python 无法在 windows -EAST 上编译 lanms
- javascript - 计算单选按钮和下拉列表的价格
- amazon-web-services - EB CLI 仅作为 sudo 工作;否则给出'DistributionNotFound'
- c - 使用for循环在C中反转字符串
- xamarin.android - 如何在 Xamarin.android 中单击的项目上从 recyclerview 传递数据
- android - 如何根据xml中的基色值和alpha值设置颜色?
- c# - 如何在 CsvHelper 中以毫秒为单位序列化 DateTime
- c# - 如何动态创建视图 MVC
- java - Apache POI - 如何获取与 Excel 中显示的格式完全相同的日期?