Ubuntu django3使用Rest_Framework
一、安装Rest_Framework环境
pip3 install djangorestframework
二、
1、创建应用
python manage.py startapp students
2、在setting.py文件将rest_framework和apps.students添加进INSTALLED_APPS。
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'apps.students', ]
3、在setting.py文件设置REST_FRAMEWORK权限策略
# 设置权限策略: REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.SessionAuthentication', ), 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAdminUser', ], 'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning', # 指定使用的版本控制类 'ALLOWED_VERSIONS': ['v1', 'v2'], # 允许的版本 'VERSION_PARAM': 'version', # 版本使用的参数名称 'DEFAULT_VERSION': 'v1', # 默认使用的版本 }
4、子应用的models.py文件中创建模型对象
from django.db import models # 方式二 class Sex(models.TextChoices): male = 1, '男' female = 0, '女' # Create your models here. class Students(models.Model): # 表字段声明 # 字段名 = models.数据类型(字段约束) # 方式一 # male = 1 # female = 0 # SEX_CHOICES = { # (male, '男'), # (female, '女'), # } name = models.CharField(null=False, verbose_name="姓名", max_length=32) age = models.IntegerField(verbose_name="年龄") # sex = models.BooleanField(default=True, verbose_name="性别") sex = models.IntegerField( max_length=1, choices=Sex.choices, default=Sex.female, verbose_name="性别" ) class_num = models.CharField(max_length=5, verbose_name="班级编号") description = models.TextField(max_length=1000, verbose_name="个性签名") # 表信息声明 class Meta: # 设置数据库中表名 db_table = "tb_students" verbose_name_plural = "学生" # 模型的操作方法 def __str__(self): return self.name
5、在MySQL中创建数据库
create database students charset=utf8;
6、在项目同名文件夹的__init__.py
import pymysql pymysql.version_info = (1, 4, 13, "final", 0) pymysql.install_as_MySQLdb()
7、在setting.py文件配置数据库信息
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': "students", "HOST": "127.0.0.1", "PORT": 3306, "USER": "root", "PASSWORD":"123456", }, }
8、执行数据迁移
python3 manage.py makemigrations
python3 manage.py migrate
执行迁移时出现报错 https://www.cnblogs.com/xypbk/p/15213459.html
9、创建序列化器
在students应用目录中新建serializers.py用于保存该应用的序列化器。
创建一个StudentModelSerializer用于序列化与反序列化。
from rest_framework import serializers from .models import Students class StudentModelSerializer(serializers.ModelSerializer): # 需要进行数据转换的字段 # 当前转换的模型类相关声明 class Meta: model = Students fields = "__all__" # 所有字段 # 验证数据的方法[反序列化: 接受客户端的数据] # 操作数据库的代码[反序列化: 保存数据的代码(添加和更新)] # model 指明该序列化器处理的数据字段从模型类Student参考生成 # fields指明该序列化器包含模型类中的哪些字段,'__all__'指明包含所有字段
10、编写视图
在students应用的views.py中创建视图StudentViewSet,这是一个视图集合。
from rest_framework.viewsets import ModelViewSet # drf类视图需导入 # from django.views import View # 这是django视图类使用的 from .models import Students from .serializers import StudentModelSerializer # Create your views here. # django视图有两种:FBV函数视图 和 CBV类视图 # drf中,我们经常使用的是类视图 class StudentAPIView(ModelViewSet): """ 这里提供了5个api接口, 添加一条数据 修改一条数据 删除一条数据 获取一条数据 获取所有数据 """ queryset = Students.objects.all() # 要操作的数据 serializer_class = StudentModelSerializer # queryset指明该视图集在查询数据时使用的查询集 # serializer_class指明该视图在进行序列化或反序列化时使用的序列化器
11、定义路由
在students应用的urls.py中定义路由信息
from django.urls import path from .views import StudentAPIView # 路由列表 urlpatterns = [ ] # 使用drf提供的路由类来自动生成路由 from rest_framework.routers import DefaultRouter router = DefaultRouter() # 可以处理视图的路由器 router.register('stu', StudentAPIView,basename="students") # 向路由器中注册视图集,"stu":浏览器访问的路径,basename:路由别名 urlpatterns += router.urls # 将路由器中的所以路由信息追到到django的路由列表中
12、把students子应用中的路由文件加载到总路由文件(项目目录下的urls.py)中
from django.contrib import admin from django.urls import path, include from django.conf.urls import url # 2.x之后django把url拆分成了两个路由函数 # django.urls.path 专门编写字符串路由 # django.urls.re_path 专门编写正则路由 urlpatterns = [ path('admin/', admin.site.urls), path('students/', include("apps.students.urls")), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) ]
13、在浏览器中输入网址127.0.0.1:8000/students,可以看到DRF提供的API Web浏览页面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY