Django rest framework基本知识

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

使用pycharm生成Django项目后,会生成工程目录和app目录

Django rest framework基本知识工程目录下5个文件,settings.py是全局配置相关的 

urls.py是路有相关的

Django rest framework基本知识app相关的目录    models.py 数据库ORM对应的模型类  serializers.py 序列化与反序列化处理    views.py 根据request进行业务逻辑处理,返回response    admin.py  后台管理文件      apps.py应用管理文件

setting.py全局配置文件,参见Settings | Django documentation | Django 数据库/CSRF/Email/模板位置等等 , 通常会修改或添加的地方:

INSTALLED_APPS = [
    ......,
    'testcenter.apps.TestcenterConfig',  #先添加应用要添加到这里
    'rest_framework',
]


REST_FRAMEWORK = {  # rest framework公共配置的位置
    'DEFAULT_PERMISSION_CLASSES': [
        # 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ],
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}

MIDDLEWARE = [
    ....,  # 添加中间件类,作为请求的前处理和后处理。类须携带process_request和process_response方法
    "django.middleware.csrf.CsrfViewMiddleware",
]

urls.py路由通常两种写法:注册方法   或   写在 urlpatterns数组里

router = routers.DefaultRouter()
router.register(r'testcase', TestCaseViewSet)  # 使用注册方法(前提是使用ModelViewSet实现view的处理)
...
urlpatterns += router.urls


或者

urlpatterns = [
    path("testcase/", TestCaseViewSet.as_view({'get': 'list', "post": 'create'})),
    re_path("testcase/(?P<pk>\d+)", TestCaseViewSet.as_view({'get': 'retrieve', "delete": 'destroy', "put": 'update'})),
]           直接列出(前提是使用ModelViewSet实现view的处理)其他方法as_view()里稍作改动

models.py 数据库的模型类,可以编写一对一、一对多、多对多的关系,依照这个可以生成数据表

from django.db import models


# Create your models here.
class TestResult(models.Model):
    suit_name = models.CharField(max_length=32, verbose_name="测试套名称")
    case_name = models.CharField(max_length=32, verbose_name="测试名称")
    iter = models.IntegerField(verbose_name="轮次", null=False)
    date = models.DateField(verbose_name="测试时间")
    result = models.CharField(max_length=10, verbose_name="测试结果", null=False)
    part = models.CharField(max_length=10, verbose_name="所属特性", null=False)

serializers.py处理序列化与反序列化,通常选用的操作见下面代码

from rest_framework import serializers
from .models import TestResult


class TestResultSerializer(serializers.ModelSerializer):
    test_date = serializers.DateField(source="date")  # 依据原有的列生成新列名的方法
    class Meta:
        model = TestResult
        # fields = ['title', 'date', 'author']        # 只选取的列
        # fields = "__all__"     # 选取所有的列
        exclude = ["pub_date"]   # 不选取的列, fields和exclude为二选一

views.py使用ModelViewSet,若要重写方法直接重写,不需要的化直接删掉

from django.shortcuts import render
from rest_framework import permissions
from rest_framework.decorators import api_view, permission_classes
from django.views.decorators.csrf import csrf_exempt

# Create your views here.
from rest_framework.viewsets import ModelViewSet
from .models import TestResult
from .serializers import TestResultSerializer


class TestResultViewSet(ModelViewSet):
    queryset = TestResult.objects.all()
    serializer_class = TestResultSerializer

    def create(self, request, *args, **kwargs):   # 增加一行数据的操作
        return super().create(request, *args, **kwargs)

    def list(self, request, *args, **kwargs):   # 查看多行数据的操作
        return super().list(request, *args, **kwargs)

    def retrieve(self, request, *args, **kwargs):   # 查看一行数据的操作
        return super().retrieve(request, *args, **kwargs)

    def update(self, request, *args, **kwargs):   # 更新一行数据的操作
        return super().update(request, *args, **kwargs)

    def destroy(self, request, *args, **kwargs):   # 删除一行数据的操作
        return super().destroy(request, *args, **kwargs)

django-admin startproject newproject-name 创建django工程

不同的业务模块用不同的app进行管理,创建app,python .\manage.py startapp newapp_name

 模型文件创建或修改后进行数据迁移处理     python .\manage.py  makemigrations   制作迁移文件      python .\manage.py migrate              数据库迁移

manage.py命令选项
manage.py是每个Django项目中自动生成的一个用于管理项目的脚本文件,需要通过python命令执行。manage.py接受的是Django提供的内置命令。

内置命令包含

check
dbshell
diffsettings
flush
makemigrations
migrate
runserver
shell
startapp
startproject
test
 文章来源地址https://www.toymoban.com/news/detail-492145.html

到了这里,关于Django rest framework基本知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Django REST Framework完整教程-认证与权限-JWT的使用

    阅读本文之前,请读者先阅读: https://plugin.blog.csdn.net/article/details/133853377,如果已经知晓Django REST Framework的基础,可以继续阅读本文内容。 认证(Authentication)与权限(Permission)不是一回事。认证是通过用户提供的用户ID/密码组合或者Token来验证用户的身份。权限(Permission)的校验

    2024年02月07日
    浏览(41)
  • 渗透工具-sqlmap-基本知识及使用教程

      -u 指定目标URL (可以是http协议也可以是https协议) -d 连接数据库 --dbs 列出所有的数据库 --current-db 列出当前数据库 --tables 列出当前的表 --columns 列出当前的列 -D 选择使用哪个数据库 -T 选择使用哪个表 -C 选择使用哪个列 --dump 获取字段中的数据 --dump-all  拖库 --batch  自动选择

    2024年02月04日
    浏览(47)
  • 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日
    浏览(41)
  • 【C++入门】学习使用二维数组基本知识及用法详解

    🧛‍♂️iecne个人主页: : iecne的学习日志 💡每天 关注 iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀! 二维数组就是在一维数组上多加一个维度。 建议:以下三种定义方式,利用第二种更加直观,提高代码可读性 第二种就是在定义一

    2024年01月25日
    浏览(55)
  • 深入探索 Django Rest Framework

    这篇文章会详细介绍Django REST Framework的核心组成部分,包括Serializers、ViewSets、Routers、权限和认证系统以及测试和调试工具。文章从基础开始,逐步深入,旨在帮助读者掌握使用Django REST Framework构建复杂API的技能。 Django REST框架,通常简称为DRF,是一个强大而灵活的Web API工具

    2024年02月15日
    浏览(41)
  • Django Rest_Framework(三)

    为了方便接下来的学习,我们创建一个新的子应用 opt 注册子应用 总路由,代码: 子路由,代码: 因为接下来的认证组件中需要使用到登陆功能,所以我们使用django内置admin站点并创建一个管理员. admin运营站点的访问地址:http://127.0.0.1:8000/admin 创建管理员以后,访问admin站

    2024年02月14日
    浏览(51)
  • django rest framework 学习笔记2

    注意:该文章部分摘抄之百度,仅当做学习笔记供小白使用,若侵权请联系删除! 显示关联表的数据,本示例会显示所有的关联的数据信息 读取到的结果器数据关联的为数字,此时需要进行一些操作可以读到正确数据 方法1: source=\\\'字段名.关联属性值\\\' 方法2 : 返回其属性值

    2024年02月20日
    浏览(39)
  • Django Rest_Framework(一)

    在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。] 前后端分离【把前端的界面效果(html,css,js分离到另一个服务端或另一个目录下,python服务端只需要返回数据即可)】 前端形成一个独立的网站/独立的地址,服

    2024年02月14日
    浏览(40)
  • Django Rest_Framework(二)

    什么时候声明的序列化器需要继承序列化器基类Serializer,什么时候继承模型序列化器类ModelSerializer? 看数据是否从mysql数据库中获取,如果是则使用ModelSerializer,不是则使用Serializer drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作。所以在django原有的dja

    2024年02月14日
    浏览(36)
  • 【django2.0之Rest_Framework框架一】rest_framework序列器介绍

    Django RestFramework(简称DRF) 提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程,不仅如此,还提供丰富的类视图、扩展类、视图集来简化视图的编写工作。REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持。 github地址: https://

    2024年02月07日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包