【发布时间】:2021-06-06 10:23:37
【问题描述】:
我需要将带有标题和用户名的图像上传到使用 Django 构建的 API。在 Django 中创建 Post 视图标记为 @permission_classes((IsAuthenticated,))。这是代码:
@permission_classes((IsAuthenticated,))
class PostCreateAPIView(CreateAPIView):
serializer_class = PostSerializer
def get_queryset(self):
return Post.objects.all()
序列化器:
class PostSerializer(ModelSerializer):
class Meta:
model = Post
fields = ('author', 'description', 'image', 'created_at')
我做了一些研究,发现由于只有经过身份验证的用户才能发布图片,我需要以某种方式使用用户在登录时收到的令牌。
我在登录时获取了用户令牌,并且能够使用 hive 将其保存在本地。但是我不知道下一步该做什么。
static Future<dynamic> loginUser(String username, String password) async {
final response = await http.post("$apiURL/en/api/users/login/", body: {
"username": username,
"password": password,
});
return response?.body;
}
这是我的登录代码,它返回带有用户名、user_id 和令牌的 json 格式。像这样的:
{
"token": "dc9e0de8fa2eaa917657e810db06aad2458e4f65",
"user_id": 4,
"username": "maria"
}
【问题讨论】:
-
对于使用 api 发送文件,您可以按照以下步骤操作:stackoverflow.com/a/51162343/4723045 并在登录后使用共享首选项保存用户令牌,因为使用 Hive 仅保存令牌将是过度杀伤力。您可以前往此处保存和读取共享首选项中的数据stackoverflow.com/a/54031842/4723045
-
谢谢。第一个链接很有用。但是它们不包括使用令牌的授权(
-
如果对您有帮助,请将我的答案标记为已选答案
-
谢谢。我猜它正在工作。现在,当我上传图片时,它会返回 html 标签,上面写着
413 Request Entity Too Large。我想我必须在发送之前压缩图像。
标签: flutter django-rest-framework http-post