利用django搭建一个WebApi,实现数据库表的增删查改。
数据传输基于Http协议,数据格式:JSON
ORM方式进行数据库表的CRUD(增删查改)python
专业版的使用须要注册码,网上本身下载便可mysql
当前生成的项目只是一个框架啊,具体的实现方法在应用中sql
python manage.py startapp apitest #apitest是应用名
修改默认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', } }
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)
python manage.py makemigrations //生成迁移文件 python manage.py migrate //进行迁移
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'})
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), ]
urlpatterns = [ url('admin/',admin.site.urls), # 根目录 url(r'^activities/',include('activities.urls')), # 指向子路由 ]
数据库语句无问题时,数据迁移命令没法使用,检查一下mysql的版本django
连接:https://pan.baidu.com/s/1zGAy24ZonOUQJtEo4Zp2-g
提取码:s6wr json
帐号:admin,密码:adminadminapi
http://127.0.0.1:8000/activities/Create
内容包含:app
{ "id":"15", "name":"jack", "cost":"123", "deposit":"test", "activity_price_deposit":"test", "toplimit":"test", "Statement":"test" }