gpt4 book ai didi

Django Rest Framework 上传的文件 URL

转载 作者:行者123 更新时间:2023-12-02 02:43:17 29 4
gpt4 key购买 nike

Django Rest 框架自动为上传的文件生成 url。然而,它自动生成的 url 实际上并不指向文件的存储位置。例如,我将一个名为 example.txt 的文件上传到我的 api,上传后数据库中的对象如下所示:

{
name: "John Doe",
bio: "localhost:8000/api/users/static/example.txt"
}

我的静态目录位于根目录中,因此该文件实际上存在并且可以在localhost:8000/static/example.txt处访问。自动生成的 url 返回 404。如何覆盖自动生成的 url 以使其成为正确的网址?

这是我的模型的样子:

class User(models.Model):
name = models.CharField(primary_key=True, max_length=30)
bio = models.FileField(null=True, blank=True, upload_to='static')

这是序列化器的样子:

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ("name", "bio")

最佳答案

在 settings.py 中定义您的 MEDIA_URL 和 MEDIA_ROOT

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

并添加到您的 urls.py

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

MEDIA_ROOT 是保存文件的绝对路径。 MEDIA_URL 是处理从 MEDIA_ROOT 提供的媒体的 url。我应该将 upload_at=static 更改为 upload_to=bio/files,因为静态路径仅适用于 .css、.js 和图像文件等静态文件。

关于Django Rest Framework 上传的文件 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43986781/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com