编写你的第一个Django REST API接口

Django REST Framework(DRF)是Django的一个强大扩展,它使得创建和维护RESTful API变得简单而直观。DRF的丰富特性集合,包括认证、权限、限流和自动序列化等,为开发者提供了一个全面的解决方案,用于构建高效、可扩展的Web服务。

环境准备

在开始之前,确保你的开发环境中已经安装了Python和pip。接下来,我们将使用virtualenv和virtualenvwrapper来创建一个隔离的Python环境。

  1. 安装virtualenv和virtualenvwrapper:

    bash 复制代码
    pip install virtualenv virtualenvwrapper
  2. 找到virtualenvwrapper.sh的位置,并将其添加到你的环境变量中。通常,这个文件位于/usr/local/bin/,但可能因系统而异。

  3. .bash_profile.bashrc中添加以下内容:

    bash 复制代码
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
  4. 重新加载配置文件以应用更改:

    bash 复制代码
    source ~/.bash_profile
  5. 创建一个名为mytest的虚拟环境,并指定Python版本:

    bash 复制代码
    mkvirtualenv -p /usr/local/bin/python3 mytest

项目准备

  1. 安装Django和Django REST Framework:

    bash 复制代码
    pip install django djangorestframework
  2. 创建一个新的Django项目和应用:

    bash 复制代码
    django-admin.py startproject mysite
    django-admin.py startapp books
  3. 同步数据库:

    bash 复制代码
    python3 manage.py makemigrations
    python3 manage.py migrate

序列化数据

books/serializers.py中,我们将定义如何将Django模型转换为JSON格式的数据。

python 复制代码
from django.contrib.auth.models import User, Group
from rest_framework import serializers

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'groups')

class GroupSerializer(serializers.ModelSerializer):
    class Meta:
        model = Group
        fields = ('url', 'name')

编写视图

books/views.py中,我们将使用DRF的ModelViewSet来创建我们的视图。

python 复制代码
from rest_framework import viewsets
from .serializers import UserSerializer, GroupSerializer

class UserViewSet(viewsets.ModelViewSet):
    serializer_class = UserSerializer
    queryset = User.objects.all()

class GroupViewSet(viewsets.ModelViewSet):
    serializer_class = GroupSerializer
    queryset = Group.objects.all()

定义URLs

mysite/urls.py中,我们将定义URL模式,并注册我们的视图。

python 复制代码
from django.conf.urls import url
from rest_framework import routers
from . import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

urlpatterns = [
    url('', include(router.urls)),
    url('^api-auth/', include('rest_framework.urls')),
]

配置Django Settings

settings.py中,确保已经安装了DRF和rest_framework_swagger

python 复制代码
INSTALLED_APPS = [
    ...
    'rest_framework',
    'rest_framework_swagger',
]

测试API

启动Django开发服务器:

bash 复制代码
python3 manage.py runserver 8000

现在,你可以通过curl或者直接在浏览器中访问http://127.0.0.1:8000/users/来测试你的API。

结论

通过上述步骤,你已经成功创建了你的第一个Django REST API接口。这个过程展示了如何从环境设置到序列化、视图编写和URL定义的基本流程。随着你对Django REST Framework的进一步学习,你将能够构建更加复杂和强大的API,满足各种业务需求。

相关推荐
毕设源码-朱学姐7 分钟前
【开题答辩全过程】以 基于Django框架中山社区社会补助系统为例,包含答辩的问题和答案
后端·python·django
醉舞经阁半卷书113 分钟前
Matplotlib从入门到精通
python·数据分析·matplotlib
历程里程碑15 分钟前
Linux 5 目录权限与粘滞位详解
linux·运维·服务器·数据结构·python·算法·tornado
程序员哈基耄24 分钟前
安全高效,本地运行:全能文件格式转换工具
大数据·python·安全
lixin5565561 小时前
基于神经网络的音乐生成增强器
java·人工智能·pytorch·python·深度学习·语言模型
养海绵宝宝的小蜗1 小时前
Python第二次作业
开发语言·python
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 43--添加allure测试报告显示信息和其他封装方法
python·学习·测试工具·allure
无垠的广袤1 小时前
【CPKCOR-RA8D1】RUHMI 转换 AI 模型
人工智能·python·嵌入式硬件·开发板
aiguangyuan1 小时前
从词袋到TF-IDF:sklearn文本特征工程实战指南
人工智能·python·nlp
数据知道1 小时前
PostgreSQL 实战:详解 UPSERT(INSERT ON CONFLICT)
数据库·python·postgresql