- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.AllowAny',
),
}
序列化器.py
class UserSerializer(serializers.ModelSerializer):
related_postwriter = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = User
fields = ('id', 'username', 'email', 'related_postwriter')
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('id', 'created_date', 'author', 'text', 'image')
def create(self, validated_data):
validated_data['author'] = self.context['request'].user
return super(PostSerializer, self).create(validated_data)
模型.py
class Post(models.Model):
author = models.ForeignKey(User, related_name='related_postwriter')
text = models.TextField(blank = False)
image = models.ImageField(null = False, blank = False, upload_to='images')
created_date = models.DateTimeField(
default=timezone.now
)
def __str__(self): # __unicode__ on Python 2
return self.text
views.py
class PostViewSet(viewsets.ModelViewSet):
serializer_class = PostSerializer
permission_classes = [IsAuthenticated]
queryset = Post.objects.all()
我必须为 json 请求和 json 响应制作这个 RESTful api。当我为 Android 应用程序使用这个 RESTful api 时,我了解到我登录并从 RESTful api 获取 Token,然后该 Token 用于通过 Header 将数据发布到 RESTful api。
作为 postman 捕获,
我必须在 Body 上填写 "author":"number"。我认为这个数字意味着用户在我的 RESTful api 上注册订单。从上面的捕获中,该作者是我的 RESTful api 的第一个用户。
如果我将作者字段设为空,它会返回
{
"author": [
"This field is required."
]
}
如何使用 Token(或其他不使用 Token 的方式)自动填写“作者”部分?
如何获取 json 响应 "author":"some alphabet name readable"
,而不是 "author":"1 or 2 like number"
作为捕获。我想要像 "author":"stackoverflowman"
这样的形式。
最佳答案
对于你的第一个问题,你应该在PostViewSet
中添加这个函数:
def perform_create(self, serializer):
serializer.save(author=self.request.user)
对于你的第二个问题,你应该从 PostSerializer
调用 UserSerializer
:
class PostSerializer(serializers.ModelSerializer):
author = UserSerializer(read_only=True)
class Meta:
model = Post
fields = ('id', 'created_date', 'author', 'text', 'image')
编辑
如果你只想要一个字段,你可以用source声明一个字段:
class PostSerializer(serializers.ModelSerializer):
author = serializers.ReadOnlyField(source='author.username')
class Meta:
model = Post
fields = ('id', 'created_date', 'author', 'text', 'image')
关于android - DRF(django-rest-framework)和TokenAuthentication,如何根据Token自动填充json字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39425303/
我正在使用 Django Rest Framework 来构建我的 API,而且我对它还很陌生。 我设置了一个 TokenAuthentication 方法,现在我尝试根据此 token 过滤查询集的
我有一个 Django REST 应用程序和由 Django REST framework JWT Auth 提供支持的 token 身份验证 让我制定我的高级目标: 我的目标是为用户生成一个 tok
我正在尝试使用使用 TokenAuthentication 的 DRF 开发 REST API .这将用于 android 应用程序。 我能够对用户进行身份验证并检索其 token 。我现在遇到的问题
我正在尝试使用 token 身份验证创建一个 api。我的问题是我不希望 token 与用户帐户相关联,而是与帐户模型相关联。 例如: class Account(models.Model):
我正在使用 Symfony3、Nginx、PHP7 构建一个 Web 应用程序。为了授权,我创建了一个扩展 AbstractGuardAuthenticator 的 TokenAuthenticato
我正在为移动和 Web 环境构建一个服务器,我希望 session 身份验证与 token 身份验证一起进行。然而,这些似乎相互矛盾。我对两种方案中的登录有不同的看法。 如果我在可浏览 API 中以用
我正在按照 DRF 文档设置 TokenAuthentication,但无法使用可浏览的 API。我相信我已经在 settings.py 中添加了正确的行: REST_FRAMEWORK = { 'D
我正在使用 django 的 rest_framework 库为 django 应用程序构建 API。一切都很顺利,我可以按预期通过 curl 命令访问我的 API。 现在,我想使用 CoreAPI
我正在尝试创建一个 flutter 应用程序,它将使用 webview 显示来自我的 Django 应用程序的经过身份验证的数据。 涉及步骤: Flutter 应用发送身份验证请求 Django 验证
我们使用 rest_framework.authentication.TokenAuthentication 使用访问 token 对 Django REST Framework 中的 API 用户进
我在 Django REST Framework 中使用 TokenAuthentication 来让脚本远程访问我的 API。运行 API 的域位于 TLS 证书之后。 我已经搜索了许多来源,并在来
在使用 Django REST Framework 构建的 API 中可以使用 TokenAuthentication 方法进行身份验证。它的documentation表示身份验证 token 应通过
我有一个django项目,使用django-rest-framework来创建api。 想要使用基于 token 的身份验证系统,因此(放置、发布、删除)的 api 调用只会为授权用户执行。 我安装了
我在一个依赖 Django 用户模型和 DjangoRestFramework 下的 TokenAuthentication 的项目中工作 我被要求获取每个用户的上次登录日期时间,我意识到当我调用身份
我是一名优秀的程序员,十分优秀!