Python中如何编写一个非常小白和基础的 django-rest-framework 教程

第一次写这种东西 不知道怎么写才合适 希望大家给一些改进的意见
https://zhuanlan.zhihu.com/p/53164234
Python中如何编写一个非常小白和基础的 django-rest-framework 教程

7 回复

坚持原创,我建议你最好提供一下代码仓库。
既然是面对小白,那么你写得如此小白就对了。可以的话可以更小白,比如说用什么编辑器,或者 IDE。我觉得 IDE 就用 Pycharm 社区版为例,编辑器就用 VSCode 就好了,毕竟大家都容易获得。
然后可能的话,Python 环境的搭建也要说一下,关照一下用 Windows 的同学,可以跟他们讲讲虚拟机的使用,最好提供一个弄好的镜像,或者一键启动的 docker kickstart 脚本


要写一个给纯小白的 Django REST Framework 教程,你得从最基础的开始,一步步来。别一上来就扯什么序列化器、视图集,先把环境搭好,让代码跑起来再说。

首先,确保你装了 Python,然后用 pip 安装 Django 和 DRF:

pip install django djangorestframework

创建一个新项目和一个叫 api 的应用:

django-admin startproject myproject
cd myproject
python manage.py startapp api

rest_framework 和你的 api 加到 INSTALLED_APPS 里。打开 myproject/settings.py

INSTALLED_APPS = [
    ...
    'rest_framework',
    'api',
]

假设我们做个简单的“待办事项”API。先在 api/models.py 里定义模型:

from django.db import models

class TodoItem(models.Model):
    title = models.CharField(max_length=200)
    completed = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)

然后创建并应用迁移:

python manage.py makemigrations
python manage.py migrate

接下来是关键,在 api 目录下创建 serializers.py。序列化器就是把模型数据转换成 JSON 的:

from rest_framework import serializers
from .models import TodoItem

class TodoItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = TodoItem
        fields = ['id', 'title', 'completed', 'created_at']

现在写视图。在 api/views.py 里,我们用最简单的基于类的视图来处理 GET 和 POST:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import TodoItem
from .serializers import TodoItemSerializer

class TodoList(APIView):
    def get(self, request):
        todos = TodoItem.objects.all()
        serializer = TodoItemSerializer(todos, many=True)
        return Response(serializer.data)

    def post(self, request):
        serializer = TodoItemSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

最后配置 URL。在 api 目录下创建 urls.py

from django.urls import path
from .views import TodoList

urlpatterns = [
    path('todos/', TodoList.as_view(), name='todo-list'),
]

别忘了在主项目的 myproject/urls.py 里包含它:

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

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

搞定!现在运行服务器:

python manage.py runserver

用浏览器打开 http://127.0.0.1:8000/api/todos/,你应该能看到一个空的列表。可以用 Postman 或者 curl 发个 POST 请求试试:

curl -X POST http://127.0.0.1:8000/api/todos/ \
  -H "Content-Type: application/json" \
  -d '{"title": "学习DRF", "completed": false}'

再刷新浏览器页面,就能看到你刚创建的任务了。教程的核心就是先让东西动起来,再慢慢深入细节。

总结:从搭建环境、创建模型到实现基础的列表API,一步步动手跑通是关键。

赞,支持,python 刚入门。。。

楼主!刚好最近在了解 DRF,作为小白我觉得把示例 demo 开放出来再加点代码注释就很好了(毕竟代码读懂了对于小白来说就算成功了吧),作者教程写好了请你喝阔乐 XD。还有环境的设置

补充一下,我只是以读者的角度提出建议不是要求 emmm

少用图片?

解决了跨域请求问题么,同学?比如我在 a.ch-yk.com 网站请求 api.ch-yk.com ,浏览器拦截么?笑。(处理响应头)

回到顶部