パイソンジャンゴWEBAPI基本的な使い方

目的

Djangoは変更データベーステーブルの検索を実現するためにWEBAPI、追加と削除を使用して構築されました。
HTTPベースのデータ伝送プロトコル、データフォーマット:JSONの
データベーステーブルORM形態CRUD(追加変更チェック)

開発段階

> newProject - Djangoプロジェクト、ファイルを構築するためにpycharmプロを使用して、


プロフェッショナルの使用は、登録コードを必要とし、あなたはオンラインを自分でダウンロードすることができます

プロジェクトとアプリケーション

プロジェクトは、現在のアプリケーションの特定方法では、フレームのAHを発生させます

アプリケーションの作成

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

Djangoは、プロジェクトのアプリケーションで使用されます

settings.py構成データベース

デフォルトのデータベースを変更します。

# 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とコール(活動:アプリケーション、Project1のプロジェクト名)

活動/ 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)

移行ファイルは、MySQLにテーブルにモデルを追加

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

で作成実装5つのメソッドの活動/ views.py

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'})

アクティビティ/サブルートを作成するの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のバージョンを確認し、データベースステートメントを使用していません

ダウンロードして、使用するプロジェクト

Baiduのネットワークディスクリンク

リンク:https://pan.baidu.com/s/1zGAy24ZonOUQJtEo4Zp2-g
抽出コード:s6wr

テストモード

http://127.0.0.1:8000/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"
}

おすすめ

転載: www.cnblogs.com/aqyl/p/11204917.html