Django系列之DRF简单使用

这篇具有很好参考价值的文章主要介绍了Django系列之DRF简单使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于ModelViewSets的简单使用

models.py

from django.db import models

class AuthorDetail(models.Model):
    gender = models.CharField(max_length=8)
    birthday = models.DateField()
    telephone = models.BigIntegerField()
    addr = models.CharField(max_length=64)

class Author(models.Model):
    name = models.CharField(max_length=32)
    age = models.IntegerField()
    ad = models.OneToOneField(AuthorDetail, on_delete=models.CASCADE, null=True)

    def __str__(self):
        return self.name

serializers.py

from rest_framework import serializers

class AuthorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Author
        fields = "__all__"
        
        # 检验条件
        extra_kwargs = {
            "age": {"min_value": 0, "max_value": 200}
        }

app01/views.py

from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSet

from app01.models import Author
from app01.serializers import AuthorSerializer

class AuthorModelViewsets(ModelViewSet):

    queryset = Author.objects.all()
    serializer_class = AuthorSerializer

    @action(methods=["get"], detail=False)          # detail=False or True: True: 系统会自动在生成的路由中添加pk值
    def top3(self, request):
        top3 = self.queryset.order_by("-age")[:3]
        serializer = AuthorSerializer(instance=top3, many=True)
        return Response(serializer.data)

    @action(methods=["get"], detail=True)       # 如果视图逻辑中需要pk值,detail就得是True
    def detailone(self, request, pk):
        author_detail = Author.objects.get(pk=pk)
        print(author_detail)
        return Response({"name": author_detail.name, "age": author_detail.age})

project/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path("league/", include("app01.urls")),
]

app01/urls.py

from rest_framework.routers import SimpleRouter

from app01.views import AuthorModelViewsets

urlpatterns = []

router = SimpleRouter()
router.register("author", AuthorModelViewsets)

urlpatterns += router.urls

使用 SimpleRouter() 可以帮我们实现五个基础的 action 方法:
{“get”: “list”, “post”: “create”, “get/id”: “retrieve”, “put”: “update”, “delete”: “`destroy”}

如果需要增加一些其他的路由视图,就需要用 action 声明了。

action声明

如果需要增加一些其他自定义视图函数,则需要使用到 action 装饰器:

from rest_framework.decorators import action

@action(methods=["get"], detail=False)
def top3(self, request):
	...

@action(methods=["get"], detail=True)
def detailone(self, request, pk):
        ...

detail 参数: True or False,如果视图中需要用到pk值,那就让 detail=True
True:系统会自动在生成的路由中添加pk值,比如
Django系列之DRF简单使用,django,sqlite,数据库
False:不会添加pk值到路由中。文章来源地址https://www.toymoban.com/news/detail-619173.html

到了这里,关于Django系列之DRF简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Django入门系列】数据库操作

    在本章中,我们将学习在Django中进行数据库操作的基础知识。我们将探讨Django中的数据库支持、定义和迁移数据库模型、使用Django的ORM进行数据库查询以及数据库关系和查询优化。 Django提供了对多种关系型数据库的支持,包括常见的MySQL、PostgreSQL和SQLite等。你可以在项目的配

    2024年02月12日
    浏览(46)
  • Django DRF - 【Token】认证基本使用

    Django Rest Framework Token 是Django Rest Framework中的一个扩展,用于实现用户认证和授权。它为每个用户生成一个唯一的Token,并将其存储在数据库中。在用户进行API请求时,用户需要在请求的HTTP Header中包含Token,这样服务器就可以验证用户的身份。 迁移完成会生成 authtoken_token 这张

    2024年02月12日
    浏览(26)
  • Django实现DRF数据API接口格式封装

    当进行前后端分离开发时,前端Vue通常需要与后端接口交互并获取数据。初始情况下数据可能是这样的:

    2024年02月11日
    浏览(36)
  • 【django开发手册】详解drf filter中DjangoFilterBackend,SearchFilter,OrderingFilter使用方式

    💖 作者简介:大家好,我是Zeeland,开源建设者与全栈领域优质创作者。 📝 CSDN主页:Zeeland🔥 📣 我的博客:Zeeland 📚 Github主页: Undertone0809 (Zeeland) 🎉 支持我:点赞👍+收藏⭐️+留言📝 💬介绍:The mixture of software dev+Iot+ml+anything🔥 【django开发手册】Django 中使用自定义用

    2024年02月09日
    浏览(30)
  • Django使用DRF + Simple JWT 完成小程序使用自定义用户的注册、登录和认证

    在已经配置好djangorestframework-simplejwt的前提下进行 小程序用户模型类 这里的模型类并未继承django自带的用户模型类,好处是后面小程序用户也是没法进行admin端的,缺点是可能会对django自带的权限管理有影响,如果只有小程序端的用户的话没问题,但是如果还有其它用户的话

    2024年02月10日
    浏览(34)
  • django使用mysql数据库

    Django开 发操作数据库比使用pymysql操作更简单,内部提供了ORM框架。 下面是pymysql 和orm操作数据库的示意图,pymysql就是mysql的驱动,代码直接操作pymysql ,需要自己写增删改查的语句 django 就是也可以使用pymysql、mysqlclient作为驱动,但是目前对mysqlclient的支持更好,在驱动的基础

    2024年02月14日
    浏览(42)
  • django使用多个数据库实现

    在开发 Django 项目的时候,很多时候都是使用一个数据库,即 settings 中只有 default 数据库,但是有一些项目确实也需要使用多个数据库,这样的项目,在数据库配置和使用的时候,就比较麻烦一点。 2.1 默认只是用一个数据库时 DATABASES 的设置(以 SQLite 为例) 2.2 Django 数据库

    2023年04月21日
    浏览(30)
  • Django进阶:DRF(Django REST framework)

    DRF 即 Django REST framework 的缩写,官网上说: Django REST framework 是一个强大而灵活的工具包,用于 构建Web API 。 简单来说:通过DRF创建API后,就可以通过HTTP请求来获取、创建、更新或删除数据(CRUD)。 那么为什么要构建API呢? 在Django中,我们通过 model-view-template 实现了 后端和前

    2024年02月11日
    浏览(28)
  • DRF ~ day11 之 基于角色的访问控制、django的权限演示、权限控制、simple-ui的使用、django-vue-admin演示

    概念 RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管

    2024年01月19日
    浏览(29)
  • django的DRF(三)

    DRF(Django Rest Framework)是可以快速基于Restful开发得Django应用得插件,功能非常多,被广泛应用。 所谓Restful风格就是不在用户请求的URL当中说明 “操作动作(create,delete,put)”。而是直接请求资源,通过不同的http方法来做对应的操作。 比如: 注册: 在settings.py文件中进行注册

    2024年02月21日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包