在我的django应用程序中,我需要使用电话号码检查用户是否存在。使用电话号码和OTP登录。 我可以通过获取请求来检查用户是否存在
"/api/profiles/<primary key here>/".
但是如果我要求
"/api/profiles/"
我得到数据库中所有用户的列表。
如果需要,我需要我的应用不返回任何内容
"/api/profiles/"
和用户详细信息(如果要求)
"/api/profiles/<primary key here>/"
我该怎么做?
序列化器是基本模型序列化器
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = [
"id",
"is_superuser",
"fullname",
"email",
"is_staff",
"is_active",
# "birthdate",
"phone_number",
"created_at",
"updated_at",
]
网址:
router = routers.DefaultRouter()
router.register(r"profiles", views.UserProfileViewSet)
urlpatterns = [
path("admin", admin.site.urls),
path("restauth/", include("rest_framework.urls", namespace="restauth")),
path("api/", include(router.urls)),
观看次数:
class UserProfileViewSet(viewsets.ModelViewSet):
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer
答案 0 :(得分:0)
您可以尝试使用此代码
from rest_framework import mixins
class UserProfileViewSet(viewsets.ViewSet, mixins.RetrieveModelMixin):
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer
答案 1 :(得分:0)
使用序列化程序无法找到答案。 因此,我建立了一个基于函数的视图,该表单使用表单数据获取电话号码,并在每次提出请求并存在用户时将密码更新为随机的6位数otp。
检查用户
try:
UserProfiles.objects.get(phone_number=request.POST["phone_number"]
# generate otp
return HttpResponse(otp)
except:
return HttpResponse("user not found")