Django restフレームワークによって、アップロードされたファイルのURLが自動的に生成されます。ただし、自動的に生成されるURLは、実際にファイルが格納されている場所を指しません。例えば、私はexample.txt
という名前の私のAPIにファイルをアップロードし、これが私のデータベース内のオブジェクトは、アップロード後に次のようになります。Django RestフレームワークアップロードされたファイルURL
{
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')
ここシリアライザは次のようになります。あなたは
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
をsetting.pyにあなたのMEDIA_URLとあなたのMEDIA_ROOTを定義
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ("name", "bio")
シリアライザにコードを追加できますか? –
ちょうどそれを更新しました! – zjwhi