Django REST Framework (DRF) 是一个用于构建 Web API 的高级、简洁且易于使用的Python库,它是基于著名的Web框架Django而创建的。DRF提供了一套强大的工具和约定,简化了处理HTTP请求和响应的过程,以及序列化数据到JSON格式。它支持常见的RESTful架构模式,如资源定义(Resources)、视图集(ViewSets)、序列化器(Serializers)、认证和授权等。
通过DRF,你可以快速地创建API端点、处理HTTP方法(GET、POST、PUT、DELETE等)、分页和过滤数据、处理文件上传,并且可以轻松集成各种验证策略。DRF还提供了自动化的文档生成,使得开发者和API使用者能够方便地了解API的功能和使用方法。
1.项目初始化
新建Django项目
使用指令构建项目 ------> python manage.py startapp studentweb
新建Python Package命名为app,并将上述指令生成的studentweb 文件夹拖拽到app中并将app文件夹设置为 Sources Root 类型
将项目注册到settings.py下的 INSTALLED_APPS中,并使系统可以定位到app文件夹
2.连接Mysql
安装pymysql ---> pip install pymysql -i https://mirrors.aliyun.com/pypi/simple/
在和settings.py同目录下的__init__.py文件中添加如下配置
import pymysql
pymysql.install_as_MySQLdb()
在settings.py配置Mysql连接信息如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名',
'USER': '用户名',
'PASSWORD': '密码',
'HOST': '地址',
'PORT': '端口'
}
}
3.定义models类
from django.db import models
# Create your models here.
class Faculty(models.Model):
name = models.CharField(verbose_name="学院名称",max_length=100,unique=True,null=False,blank=False)
class Meta:
managed = True
app_label = "studentweb"
db_table = "Stu_Faculty"
def __str__(self):
return "%s" % (self.name)
class Major(models.Model):
name = models.CharField(verbose_name="专业名称",max_length=100,null=False,blank=False)
faculty = models.ForeignKey(verbose_name="所属学院",to=Faculty,on_delete=models.PROTECT)
class Meta:
managed = True
app_label = "studentweb"
db_table = "Stu_Major"
def __str__(self):
return "%s" % (self.name)
class Student(models.Model):
sno = models.CharField(verbose_name="学号", max_length=100, primary_key=True, null=False, blank=False)
name = models.CharField(verbose_name="姓名", max_length=100, null=False, blank=False)
gender = models.CharField(verbose_name="性别", max_length=100, null=True, blank=True, default=None)
birthday = models.DateField(verbose_name="出生日期", null=True, blank=True, default=None)
major = models.ForeignKey(verbose_name="专业", to=Major, on_delete=models.PROTECT)
mobile = models.CharField(verbose_name="电话", max_length=100, null=True, blank=True, default=None)
email = models.CharField(verbose_name="邮箱", max_length=100, null=True, blank=True, default=None)
address = models.CharField(verbose_name="地址", max_length=100, null=True, blank=True, default=None)
image = models.CharField(verbose_name="照片", max_length=100, null=True, blank=True, default=None)
class Meta:
managed = True
app_label = "studentweb"
db_table = "Stu_Student"
def __str__(self