Django REST framework+Vue 打造生鲜超市(八)
2018-04-15 09:11
806 查看
九、个人中心功能开发
9.1.drf的api文档自动生成和
(1) url#drf文档,title自定义 path('docs',include_docs_urls(title='仙剑奇侠传')),
访问:http://127.0.0.1:8000/docs 就可以自动生成
# user_operaton/views.py from rest_framework import viewsets from rest_framework import mixins from .models import UserFav from .serializers import UserFavSerializer,UserFavDetailSerializer from rest_framework.permissions import IsAuthenticated from utils.permissions import IsOwnerOrReadOnly from rest_framework_jwt.authentication import JSONWebTokenAuthentication from rest_framework.authentication import SessionAuthentication class UserFavViewset(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.CreateModelMixin, mixins.DestroyModelMixin): ''' 用户收藏 ''' #permission是用来做权限判断的 # IsAuthenticated:必须登录用户;IsOwnerOrReadOnly:必须是当前登录的用户 permission_classes = (IsAuthenticated,IsOwnerOrReadOnly) #auth使用来做用户认证的 authentication_classes = (JSONWebTokenAuthentication,SessionAuthentication) #搜索的字段 lookup_field = 'goods_id' #动态选择serializer def get_serializer_class(self): if self.action == "list": return UserFavDetailSerializer elif self.action == "create": return UserFavSerializer return UserFavSerializer def get_queryset(self): #只能查看当前登录用户的收藏,不会获取所有用户的收藏 return UserFav.objects.filter(user=self.request.user)
serializer.py
在会员中心可以看到已收藏的商品以及详细信息,点删除,可以删除对应的商品
9.4.用户留言功能
(1)user_operation/serializers.pyclass LeavingMessageSerializer(serializers.ModelSerializer): ''' 用户留言 ''' # 获取当前登录的用户 user = serializers.HiddenField( default=serializers.CurrentUserDefault() ) #read_only:只返回,post时候可以不用提交,format:格式化输出 add_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M') class Meta: model = UserLeavingMessage fields = ("user", "message_type", "subject", "message", "file", "id" ,"add_time")
(2)user_operation/views.py
class LeavingMessageViewset(mixins.ListModelMixin, mixins.DestroyModelMixin, mixins.CreateModelMixin, viewsets.GenericViewSet): """ list: 获取用户留言 create: 添加留言 delete: 删除留言功能 """ permission_classes = (IsAuthenticated, IsOwnerOrReadOnly) authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication) serializer_class = LeavingMessageSerializer # 只能看到自己的留言 def get_queryset(self): return UserLeavingMessage.objects.filter(user=self.request.user)
(3)配置url
# 配置用户留言的url router.register(r'messages', LeavingMessageViewset, base_name="messages")
可以获取、删除留言等功能
9.5.用户收获地址
(1)user_operation/serializers.pyclass AddressSerializer(serializers.ModelSerializer): user = serializers.HiddenField( default=serializers.CurrentUserDefault() ) add_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M') class Meta: model = UserAddress fields = ("id", "user", "province", "city", "district", "address", "signer_name", "add_time", "signer_mobile")
(2)user_operation/views.py
如果要实现增删改查功能,只要继承ModelViewSet就可以了
class AddressViewset(viewsets.ModelViewSet): """ 收货地址管理 list: 获取收货地址 create: 添加收货地址 update: 更新收货地址 delete: 删除收货地址 """ permission_classes = (IsAuthenticated, IsOwnerOrReadOnly) authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication) serializer_class = AddressSerializer def get_queryset(self): return UserAddress.objects.filter(user=self.request.user)
(3)配置url
# 配置收货地址 router.register(r'address',AddressViewset , base_name="address")
相关文章推荐
- Django REST framework+Vue 打造生鲜超市(一)
- Django REST framework+Vue 打造生鲜超市(二)
- Django REST framework+Vue 打造生鲜超市(七)
- Django REST framework+Vue 打造生鲜超市(八)
- Django REST framework+Vue 打造生鲜超市(三)
- Django REST framework+Vue 打造生鲜超市(五)
- Django REST framework+Vue 打造生鲜超市(六)
- Django REST framework+Vue 打造生鲜超市(六)
- Vue+Django REST framework打造生鲜电商项目:学习过程之报错信息
- 【备忘】[全栈开发 ]Vue+Django REST framework 打造生鲜电商项目视频教程
- Vue+Django REST framework 打造生鲜电商项目
- vue+djangorestframework打造前后端分离项目(一)之drf的ViewSet、router和跨域
- 学习使用"Django REST framework"打造RESTful API接口——第一节 quickstart
- Vue+Django REST framework 生鲜电商项目
- Django rest framework + Vue简单示例
- Django REST Framework Tutorial 3:基于类的Views(中文版教程)by hillfree
- Django Rest Framework - 异常 、返回值处理 与 分页实现
- django rest framework使用django-filter
- django rest framework and angularjs
- Django REST framework