drf 安装_drf 安装与配置
环境安装与配置
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',
]
接下来就可以使用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 报错如下:
解决方案:
注释掉 backends/mysql/base.py中的35和36行代码。
# 执行数据迁移发生以下错误:
解决方法:
backends/mysql/operations.py146行里面新增一个行代码:
创建序列化器 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")),
]
运行测试
drf 安装_drf 安装与配置相关推荐
- drf 安装_drf安装与基本使用
今日内容 1 web开发模式 #前后端混合开发(前后端不分离):返回的是html的内容,需要写模板 #前后端分离:只专注于写后端接口,返回json,xml格式数据 # xml格式 lqz # json ...
- 【CV】Python下载安装及环境变量配置教程
目录 Python下载 Python安装 Python环境变量配置 Python下载 可通过https://www.python.org/downloads/下载 1.进入网页后点击Windows,其 ...
- oracle数据库配置失败,oracle11g – Oracle 11G XE安装错误:数据库配置失败
在 linuxMint上安装后运行oracle配置时: /etc/init.d/oracle-xe configure 指定以下错误: sudo /etc/init.d/oracle-xe confi ...
- mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能
MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...
- 如何配置mac的mysql环境_mac安装mysql数据库及配置环境变量
安装mysql 下载mysql.我下载的是:mysql-8.0.11-macos10.13-x86_64.dmg 双击打开mysql-8.0.11-macos10.13-x86_64.dmg,然后双击 ...
- 安装JDK1.8+环境配置
安装JDK1.8+环境配置 1.下载JDK 2.安装JDK 3.环境配置 3.1 新建系统变量 3.2 添加Path路径 3.3 使用cmd命令行验证是否环境配置成功 1.下载JDK 直接官网下载:h ...
- win10安装程序无法将配置为在此计算机,Win10安装会遇到的问题汇总及解决方法...
Win10发布已经有一段时间了,尽管Win10安装会遇到各种各样的问题,使用Win10的用户还是很多.那么,Win10安装会遇到的问题有什么呢?又该怎么解决呢?根据安装方式的不同,出现的问题也不同,接 ...
- Linux平台 Oracle 18c RAC安装Part2:GI配置
三.GI(Grid Infrastructure)安装 3.1 解压GI的安装包 3.2 安装配置Xmanager软件 3.3 共享存储LUN的赋权 3.4 使用Xmanager图形化界面配置GI 3 ...
- MySQLMySql免安装版安装配置
MySql免安装版安装配置,附MySQL服务无法启动解决方案 mysql 5.6.17 绿色版(免安装)安装配置教程 1 [mysql] 2 # 设置mysql客户端默认字符集 3 default-c ...
最新文章
- RN中布局样式的写法
- 比较常用的几个正则表达式
- posix自定义消息队列_消息队列开源框架,基于Io,节约服务器资源
- Python3 split()分割和 join()合并
- 【计算机类】大学生计算机专业常用工具汇总
- 怎么用计算机打分数,电脑excel中分数怎么打出来(图解excel分数输入法)
- android 访问服务器sql_XSS 攻击、CSRF 攻击、SQL 注入、流量劫持(DNS 劫持、HTTP 劫持)—— 浏览器安全
- python远程登录并执行命令_Python - 远程SSH执行命令
- mongorepository查询条件_Java操作MongoDB采用MongoRepository仓库进行条件查询 | 学步园...
- sofia-sip下载地址
- 【图像分割】基于粒子群算法实现图像聚类分割附matlab代码
- “天鹅”类谜解大全!(转载)
- 佛祖,你为什么不帮我
- 在pb中实现声音文件的播放
- STM32学习【2】STM32F103C8T6串口2USART2程序
- BZOJ 4239 巴士走读
- python爬虫爬取京东_python爬取京东价格
- 函数式编程-Stream流
- 移动端 UI设计尺寸(一)篇
- 老鼠繁殖问题(老鼠有死亡)
热门文章
- android 控制流混淆 反向,AST混淆实战:仿obfuscator混淆控制流平坦化
- OpenShift 4 - 提升客户端访问 API Server 安全
- OpenShift 4 - DevSecOps Workshop (9) - 向Dev环境部署应用镜像
- 使用Fluent NHibernate和AngularJS的Master Chef(第2部分)ASP.NET Core MVC
- 使用Newtonsoft.Json接受部分资源
- 从SQL Server生成文档
- c# rar解压大小_Linux压缩解压指令-bzip2、xz、compress、rar
- 计算机网络管理2018版,2018~2019学年度第二学期“计算机网络管理”专业技能竞赛火热进行中...
- react改变checkbox的文字类型_React Checkbox不发送onChange
- java 批量替换字符串_# Java 一步一步实现高逼格的字符串替换工具(二)