新知识点不多
1 建Serializer
from .models import UserLeavingMessage, UserFav
class LeavingMessageSerializer(serializers.ModelSerializer):
# 跟用户收藏一样 不显示user字段
user = serializers.HiddenField(
default=serializers.CurrentUserDefault()
)
# 自定义格式化 设置只读。这样在添加留言的时候就不需要添加该字段的内容了
# format 格式化输出
add_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M')
class Meta:
model = UserLeavingMessage
# id 是用于删除的时候前端能有对应的id
fields = ('user', 'msg_type', 'subject', 'message', 'file', 'id', 'add_time')
views.py
from .models import UserFav, UserLeavingMessage
from .serializers import UserFavSerializer, UserFavDetailSerializer, LeavingMessageSerializer
class LeavingMessageViewset(mixins.CreateModelMixin, mixins.ListModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet):
"""
list:
获取用户留言
create:
添加留言
delete:
删除留言功能
"""
serializer_class = LeavingMessageSerializer
permission_classes = (IsAuthenticated,)
authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication)
# 只返回当前用户的留言信息
def get_queryset(self):
return UserLeavingMessage.objects.filter(user=self.request.user)
urls.py
from user_operation.views import UserFavViewset, LeavingMessageViewset
router.register('messages', LeavingMessageViewset, base_name='messages')
models.py
class UserLeavingMessage(models.Model):
# 添加 upload_to参数
file = models.FileField(upload_to="message/images/", verbose_name=u'上传的文件', help_text=u'上传的文件')
执行效果
添加完内容后的get请求结果
这里有一个要说下
前端传递文件给后端 ,而在后端我们啥都没做 他就把前端的文件解析并存储起来了
是因为使用了MultiPartParser解析器
具体可参考官方文档
https://www.django-rest-framework.org/api-guide/parsers/#multipartparser
完结 撒花