【发布时间】:2020-01-14 16:05:58
【问题描述】:
我有一个文章模型,它带有一个字段FileField,它应该是一个降价文件,供用户加载他们的文章。我用 ModelViewSet 公开了 api。
这已保存到我的媒体文件夹中。我当然可以通过从href 获取内容来从客户端获取内容,但这意味着对我的服务器有 2 个请求:
- 获取文章信息(标题、内容 - 这是 md、发布日期、描述等)。
- 从链接中获取内容。
但我想知道是否有办法告诉 django 在响应对文章项目的请求时只发送文件内容而不是 href。
这是我的模型和 api:
# ---------------------- #
# src/articles/models.py #
# ---------------------- #
from os.path import splitext
from uuid import uuid4
from django.db import models
# Create your models here.
def hashFilename(instance, name):
ext = splitext(name)[1]
return "articles/{}{}".format(uuid4(), ext)
def hashImageFilename(instance, name):
ext = splitext(name)[1]
return "images/{}{}".format(uuid4(), ext)
class Article(models.Model):
title = models.CharField(("title"), max_length=100)
content = models.FileField("content", upload_to=hashFilename)
description = models.TextField(("description"), default='')
uploadDate = models.DateTimeField(("uploadDate"), auto_now=True)
lastModified = models.DateTimeField(("uploadDate"), auto_now=True)
publicationDate = models.DateField("publicationDate")
image = models.ImageField("image", upload_to=hashImageFilename)
def __str__(self):
return self.title
# ------------------------- #
# src/articles/api/views.py #
# ------------------------- #
from rest_framework.viewsets import ModelViewSet
from ..models import Article
from .serializers import ArticleSerializerFull, ArticleSerializerShort
class ArticlesViewSet(ModelViewSet):
queryset = Article.objects.all()
def get_serializer_class(self):
if self.action == 'list':
serializer = ArticleSerializerShort
else:
serializer = ArticleSerializerFull
return serializer
queryset = Article.objects.all()
【问题讨论】:
标签: python django django-models django-rest-framework