drf 安装_drf 安装与配置
发布日期:2021-06-24 17:54:24 浏览次数:2 分类:技术文章

本文共 2805 字,大约阅读时间需要 9 分钟。

环境安装与配置

DRF需要以下依赖:

Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)

Django (1.10, 1.11, 2.0)

DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需重新创建。(若没有Django环境,需要先创建环境安装Django)

6.1 安装DRF

前提是已经安装了django,建议安装在虚拟环境

# mkvirtualenv drfdemo -p python3

# pip install django

pip install djangorestframework

pip install pymysql

6.1.1 创建django项目

cd ~/Desktop

django-admin startproject drfdemo

使用pycharm打开项目,设置虚拟环境的解析器,并修改manage.py中的后缀参数。

6.2 添加rest_framework应用

INSTALLED_APPS = [

...

'rest_framework',

]

56df44d6d6db15b1ca866ac6d35897d5.png

接下来就可以使用DRF提供的功能进行api接口开发了。在项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤:

将请求的数据(如JSON格式)转换为模型类对象

操作数据库

将模型类对象转换为响应的数据(如JSON格式)

6.3 体验drf的过程

创建模型,models.py

class Student(models.Model):

# 模型字段

name = models.CharField(max_length=100,verbose_name="姓名")

sex = models.BooleanField(default=1,verbose_name="性别")

age = models.IntegerField(verbose_name="年龄")

class_null = models.CharField(max_length=5,verbose_name="班级编号")

description = models.TextField(max_length=1000,verbose_name="个性签名")

class Meta:

db_table="tb_student"

verbose_name = "学生"

verbose_name_plural = verbose_name

数据库设置及准备:

create database students charset=utf8;

import pymysql

pymysql.install_as_MySQLdb()

DATABASES = {

# 'default': {

# 'ENGINE': 'django.db.backends.sqlite3',

# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

# },

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': "students",

"HOST": "127.0.0.1",

"PORT": 3306,

"USER": "root",

"PASSWORD":"123",

},

}

python manage.py makemigrations

python manage.py migrate

错误列表

# 执行数据迁移 python manage.py makemigrations 报错如下:

03b1cb437219cc6a637810188844cf69.png

解决方案:

注释掉 backends/mysql/base.py中的35和36行代码。

4a8a5ba7494890b7b807fe4299e7b9f8.png

# 执行数据迁移发生以下错误:

e3a768f3a242bb9003e23dde3e36df3b.png

解决方法:

backends/mysql/operations.py146行里面新增一个行代码:

1b14cf8c3e252c4ead992f874aed08b9.png

创建序列化器 serializers.py

在应用目录中新建serializers.py用于保存该应用的序列化器。

创建一个StudentModelSerializer用于序列化与反序列化。

# 创建序列化器类,回头会在试图中被调用

class StudentModelSerializer(serializers.ModelSerializer):

class Meta:

model = Student

fields = "__all__"

model 指明该序列化器处理的数据字段从模型类Student参考生成

fields 指明该序列化器包含模型类中的哪些字段,'all'指明包含所有字段

视图 views.py

在students应用的views.py中创建视图StudentViewSet,这是一个视图集合。

from rest_framework.viewsets import ModelViewSet

from .models import Student

from .serializers import StudentModelSerializer

# Create your views here.

class StudentViewSet(ModelViewSet):

queryset = Student.objects.all()

serializer_class = StudentModelSerializer

queryset 指明该视图集在查询数据时使用的查询集

serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器

路由 urls.py

在students应用的urls.py中定义路由信息。

from . import views

from rest_framework.routers import DefaultRouter

# 路由列表

urlpatterns = []

router = DefaultRouter() # 可以处理视图的路由器

router.register('students', views.StudentViewSet) # 向路由器中注册视图集

urlpatterns += router.urls # 将路由器中的所以路由信息追到到django的路由列表中

最后把students子应用中的路由文件加载到总路由文件中.

from django.contrib import admin

from django.urls import path,include

urlpatterns = [

path('admin/', admin.site.urls),

path("stu/",include("students.urls")),

]

运行测试

转载地址:https://blog.csdn.net/weixin_34237125/article/details/113024950 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c++ loadlibrary 初始化对象_C++构造函数和初始化表
下一篇:login控件authenticate_ASP:Login控件(登录控件)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月31日 05时40分48秒