Vue + Django 2.0.6 学习笔记 9.6 用户留言功能

新知识点不多

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

 

完结 撒花

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@凌晨三点半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值