python django rest_framework 基础认识与配置

81 阅读3分钟

注意: 学习需具备Python语言能力与对django有一定的熟悉

一. 认识 Django 框架

1.1 什么是 Django?

Django 是一个由 Python 编写的高级 Web 框架,它鼓励快速开发和清晰、实用的设计。Django 主要关注以下几点:

快速开发:Django 通过一系列设计原则和工具,帮助开发者快速构建和部署 Web 应用。

干净且实用的设计:Django 强调代码重用和 “Don’t Repeat Yourself”(DRY)原则。

安全性:Django 提供内置的安全功能,如防止 SQL 注入、跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等。

1.2 Django 的主要组件

MTV 架构:Django 使用 Model-Template-View(MTV)架构模式,这是它与常见的 MVC 架构的主要区别。

Model:处理与数据库相关的所有内容。

Template:负责展示数据的前端部分。

View:包含业务逻辑和应用程序的功能。

ORM(对象关系映射) :Django 内置了强大的 ORM,帮助开发者通过 Python 代码与数据库进行交互,而不需要编写 SQL。

内置管理站点:Django 自动生成一个功能齐全的管理站点,帮助管理员管理数据。

二. 认识 Django 生态

2.1 Django Packages

Django 社区非常活跃,有大量的开源包和库可以使用,这些包可以大大简化开发过程。例如:

Django REST framework(DRF) :一个强大的工具集,用于构建 Web API。

Django Allauth:一个全面的认证应用,支持社交登录和本地账户注册。

Django Channels:用于处理 WebSockets 和其他异步协议。

2.2 Django 社区

Django 拥有一个活跃的社区和丰富的资源:

文档:Django 的官方文档非常详尽,涵盖了框架的各个方面。

论坛和讨论组:如 Stack Overflow、Django Users Google Group 等,是获取帮助和分享知识的好地方。

会议和聚会:如 DjangoCon,提供了与社区其他成员面对面交流的机会。

三. Django 下的 REST framework

3.1 什么是 Django REST framework?

Django REST framework(DRF)是一个强大且灵活的工具集,用于构建 Web API。它与 Django 完全集成,提供了一系列功能来简化 API 的开发:

序列化:将复杂的数据类型(如查询集和模型实例)转换为 JSON、XML 等格式。

认证和权限:内置多种认证和权限策略。

视图和视图集:提供了通用的视图和视图集来简化常见的 API 操作。

路由:自动生成 API 的 URL 路由。

3.2 DRF 的主要组件

Serializers:定义数据的序列化和反序列化规则。

ViewSets:将一组相关的视图逻辑组合在一起。

Routers:自动生成 URL 配置。

Authentication:支持多种认证方式,如 Token、OAuth、Session 认证等。

四. 配置 Django 支持 REST framework

4.1 安装 Django REST framework

首先,需要安装 Django 和 Django REST framework:

$ pip install django djangorestframework

4.2 配置 Django 项目

INSTALLED_APPS = [
    ...
    'rest_framework',
]

4.3 创建 Django 应用并配置 DRF

  1. 创建 Django 应用
python manage.py startapp api
  1. 定义模型(以一个简单的 Book 模型为例):
# api/models.py
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    published_date = models.DateField()
  1. 创建序列化器
# api/serializers.py
from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = '__all__'
  1. 创建视图集
# api/views.py
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
  1. 配置 URL 路由
# api/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSet

router = DefaultRouter()
router.register(r'books', BookViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

然后在项目的 urls.py 中包含应用的 URL:

# project/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('api.urls')),
]

4.4 运行项目

执行数据库迁移命令并启动服务器:

$ python manage.py migrate
$ python manage.py runserver

访问 http://127.0.0.1:8000/api/books/,你应该能看到一个简单的 API 接口,可以进行 CRUD 操作。

通过这些步骤,Django 项目已经成功配置并支持 Django REST framework,具备了构建 RESTful API 的能力。