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