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实现将元祖转换成数组的方法
May 04 Python
Python随机生成信用卡卡号的实现方法
May 14 Python
Python正则表达式实现截取成对括号的方法
Jan 06 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
深入浅析Python科学计算库Scipy及安装步骤
Oct 12 Python
pycharm运行scrapy过程图解
Nov 22 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
opencv-python的RGB与BGR互转方式
Jun 02 Python
python else语句在循环中的运用详解
Jul 06 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 cli 方式 在crotab中运行解决
2010/02/08 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
详解React中setState回调函数
2018/06/14 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
python修改注册表终止360进程实例
2014/10/13 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
Python中logging日志库实例详解
2020/02/19 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
美容师的职业规划书
2013/12/27 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
2014春晚主持词
2014/03/25 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
水知道答案观后感
2015/06/08 职场文书
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android