• drf从无到有学习Django Rest Framework框架——目录结构最佳实践、REST_FRAMEWORK、数据库配置


    💖 作者:大家好,我是Clyde
    🎉 支持我:点赞👍收藏⭐️留言📝
    😇 GitHub主页:Tengxu666 Python是一门很神奇的语言, 还在学习
    💻 DRF开源教程:drf_pro 更全面的Django Rest Framework 教程
    欢迎star 🌟

    项目初始化我们都需要做一些什么东西?接下来我们来看一下。

    1.项目目录结构

    Django 是一个出色的基于 Python 的开源 Web 开发框架,你可以使用它来创建全栈 Web 应用程序

    由于它是一个框架,因此最初可以预期项目中有许多文件。对于初学者来说,一开始可能会让人不知所措,

    但没有什么可担心的;随着时间的推移,一切都会变得简单。

    由于 Django 已经存在一段时间了,你需要了解 Django 工作目录结构的最佳实践,以便在这方面取得更成功的项目区域。

    drf_pro\
       apps\           => 存放项目所需app    
           app1\      
           app2\
       core\           => 存放项目所需核心模块文件
       drf_pro\
       logs\           => 存放项目日志
       static\         => 存放项目静态文件
       manage.py
       requirements.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2.将rest_framework加入到django项目中

    首先你需在你的 settings.py: INSTALLED_APPS 中加入以下两个drf必须的app

    • rest_framework 是为了把drf框架引入到你的项目

    • rest_framework.authtoken 会在你第一次迁移数据库的时候生成用户Token表

    
    INSTALLED_APPS = [
        'rest_framework',
        'rest_framework.authtoken'
    ]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    3.配置REST_FRAMEWORK

    接下来把下面的我们应该设置 REST_FRAMEWORK

    drf的配置全部在单个 Django 设置中命名空间,名为REST_FRAMEWORK.

    例如,您的项目settings.py文件可能包含如下内容:

    REST_FRAMEWORK = {
        'DEFAULT_RENDERER_CLASSES': [
            'rest_framework.renderers.JSONRenderer',
        ],
        'DEFAULT_PARSER_CLASSES': [
            'rest_framework.parsers.JSONParser',
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如果你不知道你的REST_FRAMEWORK中都是设置的什么内容那么你最好将其设置为{},以防发生意想不到的错误⚠️

    API参考,本处列举一些比较常用的API,具体请参考官方文档

    DEFAULT_RENDERER_CLASSES

    Response渲染器类的列表或元组,用于确定返回对象时可能使用的默认渲染器集。

    默认:

    [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ]
    
    • 1
    • 2
    • 3
    • 4

    DEFAULT_PARSER_CLASSES

    解析器类的列表或元组,用于确定访问request.data属性时使用的默认解析器集。

    默认:

    [
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser'
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    DEFAULT_AUTHENTICATION_CLASSES

    身份验证类的列表或元组,用于确定访问request.user或request.auth属性时使用的默认身份验证器集。

    默认:

    [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication'
    ]
    
    • 1
    • 2
    • 3
    • 4

    DEFAULT_PERMISSION_CLASSES

    权限类的列表或元组,确定在视图开始时检查的默认权限集。列表中的每个类都必须授予权限。

    默认:

    [
        'rest_framework.permissions.AllowAny',
    ]
    
    • 1
    • 2
    • 3
    4.配置数据库

    数据库的设置Django默认数据库为sqlite 你可以把他换成你的mysql数据库,只需要简单的配置 settings.py: DATABASES 即可

    # Database
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'DRF_TEST1',
            'USER': 'root',
            'PASSWORD': '12345678',
            'HOST': '127.0.0.1',
            'PORT': '3306'
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    当然这是最简单最普遍的做法

    当然您也可以使用dj-database-url正如我的drf_pro一样,使用url的方式来连接数据库

    DATABASES = {
        'default': config(
            'DATABASE_URL',
            cast=db_url
        )
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    DATABASE_URL请查看.env文件(github drf_pro项目文件)

    配置完DATABASE之后,你需要在你的项目初始文件夹的__init__.py中添加以下内容,以确保连接数据库

    DRF_Professional/init.py

    import pymysql
    pymysql.install_as_MySQLdb()
    
    • 1
    • 2

    🎉 支持我:点赞👍收藏⭐️留言📝
    📣 系列专栏:DjangoRestFramework🍁

  • 相关阅读:
    scrapy简单实现一个项目
    java毕业设计共享单车系统mybatis+源码+调试部署+系统+数据库+lw
    python数据分析-房价数据集聚类分析
    通过代码加解析的方式带领大家分析 :数组与指针的关系
    【系统架构设计师】一、计算机系统基础知识(指令系统|存储系统|输入输出技术|总线结构)
    ATK-ESP8266 WIFI通信
    39.cuBLAS开发指南中文版--cuBLAS中的Level-2函数hpr()
    java计算机毕业设计网上拍卖系统源程序+mysql+系统+lw文档+远程调试
    Pinia基本使用
    前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第六章 样式格式化 (Sass配置)
  • 原文地址:https://blog.csdn.net/weixin_51098806/article/details/128153911