目的

利用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"
}

最新文章

  1. 模糊测试(fuzz testing)介绍(一)
  2. javascript画直线和画圆的方法(非HTML5的方法)
  3. BW增强数据源的两种方法
  4. c# list排序
  5. 【Struts】服务器文件的上传和下载
  6. UIMenuController/UIPasteboard(2) UITableView上实用剪贴板
  7. 【HDOJ】1385 Minimum Transport Cost
  8. 曾经的岁月之maya
  9. Ubuntu 下 JDK+Tomcat+MySql 环境的搭建
  10. angular 1.26 版本 window.history.back() 自动去顶部
  11. 抽象方法为什么不能被private与static修饰
  12. C语言第四次博客作业
  13. Asp.net core 启动流程
  14. zabbix 安装rpm
  15. placeholder兼容性问题
  16. Xcode 备忘
  17. html页面典型页面制作
  18. 排序-----插入排序(python版)
  19. kill qz _e epi,eu,ex,exo out3
  20. Nginx入门篇(四)之常用配置解析

热门文章

  1. Ehcache 入门详解 (转)
  2. day 03 int bool str (索引,切片) for 循环
  3. Codeforces1256F_Equalizing Two Strings
  4. java学习笔记(5)多线程
  5. Vue配置bs环境
  6. PHP实现无限极分类的两种方式
  7. poj 1664 放苹果(dfs)
  8. laravel 添加筛选方式
  9. Quartz(一)
  10. canvas实现圆角、圆框图片