[英]getting Django current user on iOS app
我是Django的新手,正在启动Django应用程序,正在使用注册应用程序和Django rest框架,该应用程序还将用作iOS应用程序的后端,我已经设法从iOS应用程序创建用户并从浏览器编辑用户配置文件,我需要帮助来找到一种方法,该方法可以让用户在登录后编辑其配置文件详细信息。我尝试将诸如“ user.username”之类的lookup_field设置为UserProfileViewSet,以便可以访问UserProfile对象并对其进行编辑,但这没有用。
我还以为我可以在登录后以某种方式返回用户ID,并使用该ID引用我要编辑的用户个人资料,但这似乎并不实际。 你怎么看??
我发现执行此操作的另一种方法是调用user.get_profile(),但是我不知道如何从iOS应用程序中完成此工作。
这是我的UserProfile模型和序列化程序,任何帮助都将非常有用。 谢谢
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True)
# Extra attribuets
pagetitle = models.TextField(null=False)
location = models.TextField(null=True)
website = models.TextField(null=True)
bio = models.TextField(null=True)
sex = models.TextField(null=True)
birthdate = models.DateField(null=True)
def __unicode__(self):
return "%s's profile" % self.user
def create_profile(sender, instance, created, **kwargs):
if created:
profile, created= UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_profile, sender=User)
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('username','email','password')
class UserProfileSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer(many=False)
class Meta:
model = UserProfile
fields = ('user','bio')
我使用这样的信号创建UserProfile
def create_profile(sender, instance, created, **kwargs):
if created:
profile, created= UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_profile, sender=User)
您没有发布ViewSet
代码,所以我不得不猜测。 但是您的model
应该设置为User
而lookup_field
应该设置为username
。
就像是:
class UserViewSet(ModelViewSet):
model = User
lookup_field = "username"
对于每个想要为用户获取个人资料的人,这都是我在凯文的帮助下设法做到的。
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
depth = 1
fields = ('id','username','email','profile')
class CurrentUserView(APIView):
def get(self, request):
serializer = UserSerializer(request.user)
return Response(serializer.data)
使用这样的网址
url(r'^api/current-user',CurrentUserView.as_view(),
name="current_user"),
你会得到这样的答案
"id": 1,
"username": "username",
"email": "email@email.com",
"profile": {
"id": 1,
"user": 1,
"bio": "My Bio",
"sex": "M",
"birthdate": "1987-12-02"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.