使用DRF框架进行Web开发中详情页面的信息展示

当我们登录后需要或者查看自己的详细信息或者查看某商品的详细信息时,我们要去写一个关于详细内容的视图,配置好路由,编写序列化器来显示信息。具体步骤如下
1:编写视图(如需查看个人中心页面)
注意视图的所继承的类

from rest_framework.permissions import IsAuthenticated
from rest_framework import generics


class UserRetrieveView(generics.RetrieveAPIView):
    # queryset = User.objects.all()  # 不用指明查询集 只用获取到当前登录用户的信息即可
    serializer_class = UserDetailSerializer
    # 认证用户显示信息  未认证跳转到登录页
    permission_classes = [IsAuthenticated]

    def get_object(self):
        return self.request.user

2:序列化器的编写
比如要显示用户的用户名,手机号和邮箱等信息,此时继承自模型类序列化器比较简单,因为我们要显示的字段都是我们之前在模型类就定义好了的

class UserDetailSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['username', 'mobile', 'id', 'email']

3:配置路由

url(r'^user/$', views.UserRetrieveVIew.as_view())

总结:特别值得注意的是
1) 和模糊的去查询某些对象不同,详情页是在已知用户和已知商品对象的时候去查询它的详细信息,而非去查找该对象。因此不用通过主键PK去查询,单个用户查询不用在路由中指定匹配PK (?P<pk>/d+)。
2) 视图提供给我们的关于数据库查询的属性为queryset。此时不需要根据主键查找对象,而是希望根据对象查找对象信息因此不用指明。
get_object(self)在视图中可以调用该方法获取详情信息的模型类对象。默认是根据主键查找的,此时只需改写此方法,使其放回用户对象即可
3) 最后还要配置一下认证信息,只有认证过的用户才能查看详情页,在当前视图下指定认证类型

猜你喜欢

转载自blog.csdn.net/Best_fish/article/details/83475393