后台接口搭建步骤Django框架(pycharm社区版一样适用)

第一步:创建项目

打开命令行界面,输入以下命令:

django-admin startproject (项目名称)

第二步:创建应用

进入项目根目录,确保与manage.py文件处于同一级,输入下述命令:

python manage.py startapp (应用名称)

第三步:创建数据库

使用Navicat创建数据库(此处不做强行要求,能实现创建数据库即可)

第四步:配置数据库链接

在与项目同名的文件夹下,找到并打开settings.py文件

修改配置如下:

python 复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
        'NAME': 'mysite',       # 数据库名,先前创建的
        'USER': 'root',         # 用户名,可以自己创建用户
        'PASSWORD': '',         # 密码
        'HOST': '127.0.0.1',    # mysql服务所在的主机ip
        'PORT': '3306'         # mysql服务端口
    }
}

在INSTALLED_APPS中添加你的应用

python 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    '你的应用名称'
]

注释掉csrf中间件

python 复制代码
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

第五步:配置路由

在与项目同名的文件夹下,找到并打开urls.py文件

修改配置如下:

python 复制代码
from django.urls import path,include

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('api/', include('你的应用的名字.urls'))
]

第六步:创建数据库表

在应用文件夹下,找到并打开models.py

定义class类,每个类对应一张数据库表

python 复制代码
class Devices(models.Model):
    dev_code = models.CharField(max_length=24)
    dev_name = models.CharField(max_length=50)
    address = models.CharField(max_length=100)
    status = models.BooleanField()


class Records(models.Model):
    dev = models.ForeignKey(to=Devices,on_delete=models.CASCADE)
    duration = models.IntegerField(default=0)
    amount = models.DecimalField(max_digits=10, decimal_places=2)
    create_time = models.DateTimeField(auto_created=True)

运行(数据迁移,创建表)

1)python manage.py makemigrations

2)python manage.py migrate

第七步:编写数据接口

在应用文件夹下,找到并打开views.py

定义class类,每个类就是一个接口,有get(查询)、post(添加)、put(修改)、delete(删除)

python 复制代码
from django.http import JsonResponse
from django.views import View
from api.models import *
from datetime import datetime
import math
import json

# Create your views here.


class DevicesApi(View):
    def get(self, request):
        pagesize = 5
        result = Devices.objects.filter()
        params = request.GET
        keyword = params.get('key', '')
        page = params.get('page', '')
        sort = params.get('sort', '0')
        if(keyword != ''):
            result = result.filter(community_name__contains=keyword)

        if(sort == '1'):
            result = result.order_by('-id')
        elif(sort == '2'):
            result = result.order_by('id')
        records = result.count()
        print(page+'a')
        if(page != ''):
            page = int(page)
            start = (page - 1) * pagesize
            end = page * pagesize
            result = result[start:end]

        total = math.ceil(records / pagesize)

        data = []
        for item in result:
            data.append({
                'id': item.id,
                'dev_code': item.dev_code,
                'community_name': item.community_name,
                'dev_address': item.dev_address,
                'dev_status': item.dev_status
            })
        return JsonResponse({'code': 200, 'data':data, 'total': total, 'page': page})

    def post(self,request):
        data = json.loads(request.body)
        # print(data)
        obj = Devices()
        obj.dev_code = data['dev_code']
        obj.community_name = data['community_name']
        obj.dev_address = data['dev_address']
        obj.dev_status = 0
        obj.save()
        return JsonResponse({'code': 200})


class DevicesDel(View):
    def post(self, request):
        data = json.loads(request.body)
        # print(data)
        Devices.objects.filter(id__in=data).delete()
        return JsonResponse({'code': 200})

class DevicesEdit(View):
    def get(self, request):
        devID = int(request.GET.get('id',0))
        if(devID>0):
            obj = Devices.objects.get(id=devID)
            if(obj.dev_status):
                obj.dev_status = 0
            else:
                obj.dev_status = 1
            obj.save()
        return JsonResponse({'code': 200})

class DevicesInfo(View):
    def get(self, request):
        devID = int(request.GET.get('id', 0))
        result = {}
        if(devID > 0):
            obj = Devices.objects.get(id=devID)
            # print(obj)
            result = {'id': obj.id, 'dev_code': obj.dev_code, 'community_name': obj.community_name, 'dev_address': obj.dev_address, 'dev_status': obj.dev_status}
        return JsonResponse({'code': 200, 'data': result})

class RecordApi(View):
    def post(self, request):
        data = json.loads(request.body)
        obj = Records()
        obj.dev_id_id = data['dev_id']
        obj.use_times = data['use_times']
        obj.amount = data['amount']
        obj.create_time = datetime.now()
        obj.save()
        return JsonResponse({'code': 200})
    def get(self, request):
        pagesize = 5
        result = Records.objects.filter().order_by('-id')
        params = request.GET
        page = params.get('page', '')
        records = result.count()
        if (page != ''):
            page = int(page)
            start = (page - 1) * pagesize
            end = page * pagesize
            result = result[start:end]

        total = math.ceil(records / pagesize)
        data = []
        for item in result:
            data.append({
                'id': item.id,
                'dev_code': item.dev_id.dev_code,
                'community_name': item.dev_id.community_name,
                'dev_address': item.dev_id.dev_address,
                'dev_status': item.dev_id.dev_status,
                'use_times': item.use_times,
                'amount': item.amount,
                'dev_id': item.dev_id_id
            })
        return JsonResponse({'code': 200, 'data': data, 'total': total, 'page': page})
相关推荐
一个不秃头的 程序员14 分钟前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
susu108301891119 分钟前
python实现根据搜索关键词爬取某宝商品信息
爬虫·python
喜欢猪猪1 小时前
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
android·python·adb
海绵波波1071 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
林的快手1 小时前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
从以前1 小时前
准备考试:解决大学入学考试问题
数据结构·python·算法
Ven%1 小时前
如何修改pip全局缓存位置和全局安装包存放路径
人工智能·python·深度学习·缓存·自然语言处理·pip
枫欢1 小时前
将现有环境192.168.1.100中的svn迁移至新服务器192.168.1.4;
服务器·python·svn
测试杂货铺2 小时前
UI自动化测试实战实例
自动化测试·软件测试·python·selenium·测试工具·测试用例·pytest
余~~185381628002 小时前
NFC 碰一碰发视频源码搭建技术详解,支持OEM
开发语言·人工智能·python·音视频