【发布时间】:2020-06-29 17:46:03
【问题描述】:
我在下面向您展示的代码现在对我有用。它不是最安全的,但可以完成这项工作,但我想使用 POST 方法来完成。任何想法如何改变它?
我有一个 serializer.py 类
class userLoginSerializer(serializers.ModelSerializer):
class Meta:
model = users
fields = ('nick', 'pass_field')
@api_view(['GET'])
def user_login(request,nick,pass_field):
但是当我发送 2 个值 nick 和 passfield 时,它说 nick 已经存在并返回 404,因为它将它传递给 serializers.errors。我只需要使用 POST 传递代码并验证它是否存在并返回成功的 JSON。下面的代码有效,但它不是最好的实现。
if request.method == 'GET':
try:
users.objects.get(nick=nick,pass_field=pass_field)
json = {}
json['message'] = 'success'
return Response(json, status=status.HTTP_201_CREATED)
except users.DoesNotExist:
json = {}
json['message'] = 'error'
return Response(json, status=status.HTTP_400_BAD_REQUEST)
【问题讨论】:
-
您是否将密码存储为纯文本?不好。无论如何,
POST带有用户名和密码的请求看起来很像身份验证。请告诉我们更多关于您为什么首先提出请求。也许有更好的方法来解决您的问题。 -
iOS 应用程序将 nick 和 pass_field 值发送到 API。它必须检查它们是否在数据库中并在任何一种情况下返回成功、错误消息。我正在使用 request.DATA['nick'] 使用 POST 但仍然无法验证字段:( 就像 serializer.data 一样。
标签: python django django-rest-framework