Django开发RESTful API实现增删改查(入门级)


Posted in Python onMay 10, 2021

数据库中有user表如下:

Django开发RESTful API实现增删改查(入门级)

新建一个Django项目:

django-admin.py startproject myDjango<project_name>

目录介绍

myDjango/
├── manage.py  # 管理文件
└── myDjango # 项目目录
    ├── __ init __.py
    ├── settings.py  # 配置文件
    ├── urls.py  # 路由 --> URL和函数的对应关系
    └── wsgi.py  # runserver命令就使用wsgiref模块做简单的web server

使用rest_framework

在setting.py中添加:

INSTALLED_APPS = [
   ...
   'rest_framework'
]

连接MySQL数据库

在setting.py中设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'bigdatatest',
        'USER': 'root',
        'HOST': '127.0.0.1',
        'PASSWORD': '1009',
        'PORT': 3306,
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

在__init__.py中添加:

import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()

新建app

python manage.py startapp users<app_name>

目录介绍:

users/
├── migrations  # 用于在之后定义引用迁移功能
   ├── __ init __.py
├── __ init __.py
├── admin.py  # 管理站点模型的声明文件,默认为空
├── apps.py  # 应用信息定义文件。在其中生成了类Appconfig,类用于定义应用名等Meta数据
├── models.py  # 添加模型层数据类的文件
├── tests.py  # 测试代码文件
└── views.py  # 定义URL响应函数

在setting.py中添加:

INSTALLED_APPS = [
    ...
    'users'
]

把数据库中的表生成对应的model

python manage.py inspectdb

将我们表的model拷贝到users下的models.py里

from django.db import models

class User(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=255, blank=True, null=True)
    age = models.IntegerField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'user'

创建一个序列化Serializer类,使之可以转化为,某种表现形式如json

在users目录下,创建文件serializers.py

from rest_framework import serializers
from users.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = "__all__"

数据输出

编写users下的views.py

from __future__ import unicode_literals

from rest_framework.decorators import api_view
from rest_framework.response import Response

from user.models import User
from user.serializers import UserSerializer

@api_view(['GET'])
def getlist(request):  # 获取全部数据
    if request.method == 'GET':
        users = User.objects.values('id', 'name', 'age').distinct()
        serializer = UserSerializer(users, many=True)
        return Response(serializer.data)

@api_view(['GET'])
def getlistpic(request):  # 根据id查找单条数据
    id = request.GET['id']
    if id is not None:
        users = User.objects.filter(id=id)
        serializer = UserSerializer(users, many=True)
        return Response(serializer.data)
    else:
        return Response(str('请传id'))

@api_view(['POST'])
def addUser(request):  # 添加数据
    ser = UserSerializer(data=request.data)
    if ser.is_valid():
       ser.save()
       return Response(ser.data)
    return Response(ser.errors)

@api_view(['GET'])
def deleteUser(request):  # 根据id添加删除
    id = request.GET['id']
    if id is not None:
        if User.objects.filter(id=id):
            User.objects.get(id=id).delete()
            return Response(str('success'))
        else:
            return Response(str('没有此id'))
    else:
        return Response(str('请传id'))

@api_view(['POST'])
def updateUser(request):  # 根据id修改数据
    if User.objects.filter(id=request.data['id']):
        user = User.objects.get(id=request.data['id'])
        ser = UserSerializer(instance=user, data=request.data)  # 注意指定参数
        if ser.is_valid():
            ser.save()
            return Response(str('success'))
        return Response(ser.errors)
    return Response(str('没有此id'))

在urls.py中设置:

from django.conf.urls import url
from users import views as users_views
urlpatterns = [
    url(r'^getlistpic', users_views.getlistpic, name='home'),
    url(r'^getlist', users_views.getlist, name='home'),
    url(r'^addUser', users_views.addUser, name='home'),
    url(r'^deleteUser', users_views.deleteUser, name='home'),
    url(r'^updateUser', users_views.updateUser, name='home')
]

启动项目:

python manage.py runserver 127.0.0.1:8000

访问结果:

Django开发RESTful API实现增删改查(入门级)

Django开发RESTful API实现增删改查(入门级)

源码地址: myDjango

参考:
创建第一个Django项目
Python用Django写restful api接口

到此这篇关于Django开发RESTful API实现增删改查(入门级)的文章就介绍到这了,更多相关Django RESTful API增删改查内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的Flask框架中web表单的教程
Apr 20 Python
python实现猜数字小游戏
Mar 24 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
Jun 24 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
python实现一个简单的ping工具方法
Jan 31 Python
将python文件打包成EXE应用程序的方法
May 22 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
python 多维高斯分布数据生成方式
Dec 09 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
python中什么是面向对象
Jun 11 Python
Python中X[:,0]和X[:,1]的用法
May 10 #Python
Python Django搭建文件下载服务器的实现
详解python的内存分配机制
May 10 #Python
python-for x in range的用法(注意要点、细节)
May 10 #Python
Django显示可视化图表的实践
python 中[0]*2与0*2的区别说明
May 10 #Python
Python超简单容易上手的画图工具库推荐
You might like
小偷PHP+Html+缓存
2006/12/20 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
python从ftp下载数据保存实例
2013/11/20 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python实现月食效果实例代码
2019/06/18 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python字符串格式化输出代码实例
2019/11/22 Python
python实现TCP文件传输
2020/03/20 Python
python中元组的用法整理
2020/06/15 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
就业推荐表自我鉴定
2013/10/29 职场文书
期中考试后的反思
2014/02/08 职场文书
百日安全生产活动总结
2014/07/05 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
个人业务学习心得体会
2016/01/25 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python