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 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
python之array赋值技巧分享
Nov 28 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
python 实现IP子网计算
Feb 18 Python
Python中Cookies导出某站用户数据的方法
May 17 Python
django 认证类配置实现
Nov 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
Terran历史背景
2020/03/14 星际争霸
PHP遍历二维数组的代码
2011/04/22 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
文明班级建设方案
2014/05/15 职场文书
创先争优活动承诺书
2014/08/30 职场文书
个人总结与自我评价
2014/09/18 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
小学思品教学反思
2016/02/20 职场文书
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis