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实现屏幕截图的代码及函数详解
Oct 01 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
May 30 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
Jul 26 Python
python 输出所有大小写字母的方法
Jan 02 Python
python读取并写入mat文件的方法
Jul 12 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
python编写微信公众号首图思路详解
Dec 13 Python
Python中的全局变量如何理解
Jun 04 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 Python
python爬取youtube视频的示例代码
Mar 03 Python
pycharm无法导入lxml的解决办法
Mar 31 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使用curl存储cookie的示例
2014/03/31 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
一些技巧性实用js代码小结
2009/10/14 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
python数字图像处理之高级形态学处理
2018/04/27 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
社区反邪教工作方案
2014/06/16 职场文书
培训班通知
2015/04/25 职场文书
年终工作总结范文
2019/06/20 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
python办公自动化之excel的操作
2021/05/23 Python
使用springMVC所需要的pom配置
2021/09/15 Java/Android
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python