Python-Django WebAPi basic use

purpose

Django built using a WebApi, additions and deletions to achieve change database table search.
Http-based data transmission protocols, data formats: JSON
database table ORM embodiment the CRUD (additions change check)

Development steps

Use pycharm Pro to build a django project, File -> newProject


Professional use requires registration code, you can download yourself online

Projects and Applications

A project is currently generated frame ah, in the specific method of application

Creating an application

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

django used in the project application

settings.py configuration database

Modify the default 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 to create and call (Activities: applications, Project1: project name)

Activities / models.py create an event table

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)

Migration file, add the models in the table to mysql

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

Creating implement five methods Activities / views.py in

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 create sub-route (default is no such file, you need to create their own)

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 create routing

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

General error and solution

Database migration anomaly

Without question, data migration command does not use database statement, check mysql version

Project to download and use

Baidu network disk link

Links: https://pan.baidu.com/s/1zGAy24ZonOUQJtEo4Zp2-g
extraction code: s6wr

test method

http://127.0.0.1:8000/admin

Account: admin, password: adminadmin

Sending a request Reqest

http://127.0.0.1:8000/activities/Create
content includes:

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

Guess you like

Origin www.cnblogs.com/aqyl/p/11204917.html