Python中如何编写一个非常小白和基础的 django-rest-framework 教程
第一次写这种东西 不知道怎么写才合适 希望大家给一些改进的意见
https://zhuanlan.zhihu.com/p/53164234
Python中如何编写一个非常小白和基础的 django-rest-framework 教程
要写一个给纯小白的 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 ,浏览器拦截么?笑。(处理响应头)


