【发布时间】:2014-02-25 03:11:47
【问题描述】:
我正在构建一个 Django 应用程序,该应用程序公开一个 REST API,用户可以通过该 API 查询我的应用程序的两个模型。我按照here 的指示进行操作。
我的两个模型是:
- 来自 django.contrib.auth 的 Django 用户模型
-
如下图所示。
class Profile(models.Model): user = models.OneToOneField(User)
我的序列化器如下:
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', )
class ProfileSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Profile
fields = ('id', 'slug', 'user',)
当我从命令行点击 API 时,我可以看到这是有效的:
% curl -H 'Accept: application/json; indent=4' -u root:MyPassword http://127.0.0.1:3001/api/profiles/60/
{
"id": 60,
"slug": "myprofile",
"user": "http://127.0.0.1:3001/api/users/16/"
}
% curl -H 'Accept: application/json; indent=4' -uroot:MyPassword http://127.0.0.1:3001/api/users/16/
{
"url": "http://127.0.0.1:3001/api/users/16/",
"username": "myUser",
"email": "myemail@gmail.com"
}
我想知道两件事:
- 如何更改我的个人资料的序列化程序,以使用户的用户名出现在序列化的个人资料中?
- 如何公开此 API,以便即使没有 root/密码登录也能正常工作?
【问题讨论】:
-
去年在这里发布了同样的问题,没有答案:stackoverflow.com/questions/15649522/…
标签: python django rest serialization