python - 使用 API Django Rest Framework 创建用户
问题描述
我将如何使用 api 调用在数据库中创建用户客栈?我使用 Model.serializer,我试图覆盖 save 方法并使用 request.data 创建一个用户,但我似乎无法让它工作。有小费吗?我得到的错误是,当我尝试将用户分配给 request.data 时,它会返回说该值需要是一个用户实例。如何使请求的数据成为用户实例?这是我的代码。
@api_view(['POST'])
def createUser(request):
serializer = userSerializer(data=request.data)
print(request.data['username'])
if serializer.is_valid():
serializer.save()
if request.data['password'] == request.data['password2']:
userModel = UserModel.objects.create(
user=request.data,
username=request.data['username'],
email=request.data['email'],
firstname=request.data['firstname'],
lastname=request.data['lastname'],
password=request.data['password'],
password2=request.data['password2']
)
userModel.save()
return Response('User was created')
else:
return Response('Passwords must match')
解决方案
尝试使用这样的 ModelViewSet
class RegisterUser(ModelViewSet):
serializer_class = userSerializer()
query_set = UserModel.objects.all()
def perform_create(self, serializer):
password = self.request.data['password']
password2 = self.request.data['password2']
if (password==password2):
serializer.save()
return Response('User was created')
else:
return Response('Password did not match')
然后在你的网址中调用它
path("register", views.RegisterUser.as_view()),
推荐阅读
- cmake - 如何在 CMAKE_SYSROOT 之外为 cmake 的 find_path 添加搜索路径?
- selenium - 可以收集哪些关于“网站第三方”的信息?
- sql - 从多维数据集获取数据以与 SQL 查询一起使用而不先加载它?
- c# - 为什么我的页面仅在我重新启动我的应用程序时更新
- firebase - 存储相同的密钥两次但具有不同的值,可能吗?
- python - 有没有办法使用与 argparse 模块相同的语法向 pytest 添加自定义 CLI 参数?
- javascript - 为什么我的数据模板不使用 javascript 渲染新图像?
- regex - 正则表达式查找字符串中的最后一个单词 -Javascript 风格
- azure - 将 Parquet 文件从 Azure 数据湖存储帐户复制到 Synapse 数据仓库表失败
- visual-studio-code - VSCode 调试与 Mocha 和 ESM 在 ESM“编译”文件而不是原始文件中中断