目的

利用django搭建一个WebApi,实现数据库表的增删查改。

数据传输基于Http协议,数据格式:JSON

ORM方式进行数据库表的CRUD(增删查改)

开发步骤

使用pycharm专业版搭建一个django项目,File-->newProject



专业版的使用需要注册码,网上自己下载即可

项目与应用

当前生成的项目只是一个框架啊,具体的实现方法在应用中

创建应用

python manage.py startapp apitest  #apitest是应用名

django项目中使用应用

settings.py配置数据库

修改默认DATABASES

# DATABASES = {  # 默认数据库sqlite连接
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
DATABASES={ # mysql连接
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'py1', # 数据库名
'USER':'root', # mysql用户名
'PASSWORD':'root', # mysql密码
'PORT':'3306',
}
}

api的创建和调用(Activities:应用,Project1:项目名)

Activities/models.py创建活动表

from django.db import models

# Create your models here.
class activity(models.Model):
# class Meta:
# db_table='activities_activity' id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20)
cost = models.CharField(max_length=20)
deposit = models.CharField(max_length=20)
activity_price_deposit = models.CharField(max_length=20)
toplimit = models.CharField(max_length=20)
Statement = models.CharField(max_length=20)

迁移文件,将models中的表添加到mysql

python manage.py makemigrations  //生成迁移文件
python manage.py migrate //进行迁移

Activities/views.py中创建5个方法的实现

from django.shortcuts import render
from .models import activity
import simplejson
import json from django.http import JsonResponse,HttpResponse,HttpRequest def reg(request:HttpRequest):
return HttpResponse("test") def delete(request:HttpRequest):
try:
payload = simplejson.loads(request.body)
id = payload['id']
mgr = activity.objects.get(id=id)
mgr.delete()
return JsonResponse({'Status': 'DeleteSuccess'})
except Exception as e:
return JsonResponse({'Runstatus': e.args}) def update_by_id(request: HttpRequest):
try:
payload = simplejson.loads(request.body)
id = payload['id']
mgr = activity.objects.filter(id=id)
name = payload['name']
cost = payload['cost']
deposit = payload['deposit']
activity_price_deposit = payload['activity_price_deposit']
toplimit = payload['toplimit']
Statement = payload['Statement']
ac = activity()
ac.id = id
ac.name = name
ac.cost = cost
ac.deposit = deposit
ac.activity_price_deposit = activity_price_deposit
ac.toplimit = toplimit
ac.Statement = Statement
ac.save()
return JsonResponse({'Status': 'UpDateSucess'})
except Exception as e:
return JsonResponse({'Status': 'UpDateError'}) def Select_by_id(request: HttpRequest):
try:
payload = json.loads(request.body)
id = payload['id']
mgr = activity.objects.get(id=id)
data={
'name': mgr.name,
'cost': mgr.cost,
'deposit' : mgr.deposit,
'activity_price_deposit': mgr.activity_price_deposit,
'toplimit': mgr.toplimit,
'Statement': mgr.Statement
}
return JsonResponse(data)
except Exception as e:
return JsonResponse({'Runstatus':e.args}) def Create(request: HttpRequest):
try:
payload = simplejson.loads(request.body)
id = payload['id']
mgr = activity.objects.filter(id=id)
if mgr: # 如果数据库中存在
return JsonResponse({'Status': 'Exist'})
else:
name = payload['name']
cost=payload['cost']
deposit=payload['deposit']
activity_price_deposit=payload['activity_price_deposit']
toplimit=payload['toplimit']
Statement=payload['Statement']
ac = activity()
ac.id = id
ac.name = name
ac.cost=cost
ac.deposit=deposit
ac.activity_price_deposit=activity_price_deposit
ac.toplimit=toplimit
ac.Statement=Statement
ac.save()
return JsonResponse({'Status': 'CreateSucess'}) except Exception as e:
return JsonResponse({'Status': 'CreateError'})

Activities/urls.py中创建子路由(默认无此文件,需自己创建)

from django.conf.urls import url
from .views import reg,delete,Select_by_id,update_by_id,Create
urlpatterns =[
url(r'^reg$',reg),
url(r'^delete$',delete),
url(r'^Select_by_id$',Select_by_id),
url(r'^update_by_id$',update_by_id),
url(r'^Create$',Create),
]

Project1/urls.py中创建路由

urlpatterns = [
url('admin/',admin.site.urls), # 根目录
url(r'^activities/',include('activities.urls')), # 指向子路由
]

一般报错及解决方法

数据库迁移异常

数据库语句无问题时,数据迁移命令无法使用,检查一下mysql的版本

项目下载与使用

百度网盘链接

链接:https://pan.baidu.com/s/1zGAy24ZonOUQJtEo4Zp2-g

提取码:s6wr

测试方式

http://127.0.0.1:8000/admin

账号:admin,密码:adminadmin

发送Reqest请求

http://127.0.0.1:8000/activities/Create

内容包含:

{
"id":"15",
"name":"jack",
"cost":"123",
"deposit":"test",
"activity_price_deposit":"test",
"toplimit":"test",
"Statement":"test"
}

Python-Django WebAPi基本使用方法的更多相关文章

  1. python&django 常见问题及解决方法

    0.python-dev安装(ubuntu) apt-get install  python-dev 1.Open(filename,mode) 报错实例: f = open('d:\Users\16 ...

  2. 使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤

    安装配置 VSCode [1]安装 VSCode: 下载地址:https://code.visualstudio.com/ 根据自己电脑对应的操作系统下载对应的版本即可,至于安装过程也和一般的软件一样 ...

  3. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  4. python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

    python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...

  5. python Django教程 之 安装、基本命令、视图与网站

    python  Django教程  之 安装.基本命令.视图与网站 一.简介 Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 w ...

  6. python Django 学习笔记(一)—— Django安装

    注:本人python版本2.7.5 ,win7系统 安装Django https://www.djangoproject.com/download/ 官方下载Django-1.5.5.tar.gz 1 ...

  7. python Django知识点总结

    python Django知识点总结 一.Django创建项目: CMD 终端:Django_admin startproject sitename(文件名) 其他常用命令: 其他常用命令: 通过类创 ...

  8. python Django之Form组件

    python Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试 ...

  9. python Django之Ajax

    python Django之Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步 ...

  10. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

随机推荐

  1. Android热修复、插件化、组件化

    模块化:项目按照独立的模块进行划分 组件化:将项目按照单一的组件来进行划分结构 项目组件化的重要环节在于,将项目按照模块来进行拆分,拆分成一个个业务module和其他支撑module(lib),各个业 ...

  2. 06、CEL文件与灰度图像

    R语言里的image方法可以绘制CEL文件的灰度图像.我们先来讨论image这个的函数: 如:x <- c(0:2) y <- c(0:2) m <- matrix(c(1,5,10 ...

  3. 使用elasticsearch7.3版本在一台主机上部署多个实例组建集群

    系统:centos 7.4 x64 主机ip:192.168.0.160 软件包:elasticsearch-7.3.0-linux-x86_64.tar.gz 配置步骤 vim /etc/secur ...

  4. webpack4.x + vue2.x 构建前端工程化(1)

    本篇文篇纯属个人笔记,实现工程化打包(用打包后的文件可以正常渲染页面),后续继续更新配置开发环境与生产环境,如果有不合理的地方还望各位指点! 不用脚手架,直接用vue和webpack搭建前端工程化项目 ...

  5. 手把手教你如何安装使用webpack vue cli

    1.安装node.js:https://nodejs.org/en/download/(看电脑的系统是多少位下载相应版本) 我下载的是Windows Installer(.msi) x64 2.打开c ...

  6. java 并发编程lock使用详解

    浅谈Synchronized: synchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其 ...

  7. TFS 由于服务器时钟设置可能不正确,无法更新数据。请与 Team Foundation Server 管理员联系。

    原因:这个问题是由于修改安装TFS服务器的系统时间而导致的,因为TFS的Source Control会根据签入时间做判断,如果后续签入的时间小于变更集的最新版本的时间,就会报这个错误 解决办法:首先将 ...

  8. last, lastb - 显示最近登录的用户列表

    总览 last [-R] [-num] [ -n num ] [-adiox] [ -f file ] [name...] [tty...] lastb [-R] [-num] [ -n num ] ...

  9. caffe数据集LMDB的生成

    本文主要介绍如何在caffe框架下生成LMDB.其中包含了两个任务的LMDB生成方法,一种是分类,另外一种是检测. 分类任务 第一步  生成train.txt和test.txt文件文件 对于一个监督学 ...

  10. html-DOM了解

    什么是 HTML DOM? HTML DOM 是: HTML 的标准对象模型 HTML 的标准编程接口 W3C 标准 HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法. 换 ...