设为首页 加入收藏

TOP

django原生api接口(一)
2023-07-23 13:45:46 】 浏览:74
Tags:django 原生 api 接口

django原生api接口

1.1 创建django项目

django-admin startproject drfdemo1

1.2 创建app

django-admin startapp app

1.3 创建数据模型

app/models.py中编写如下代码:

from django.db import models


class studentsInfo(models.Model):
    name = models.CharField(max_length=12, verbose_name='姓名')
    sex = models.CharField(max_length=1, verbose_name='性别')
    age = models.IntegerField(verbose_name='年龄')
    classroom = models.CharField(max_length=10, verbose_name='教室')
    info = models.CharField(max_length=100, verbose_name='个人简介')

1.4 配置环境

drfdemo1/settings.py:

# 后端只提供接口,不使用后台等其他功能,所以将无用功能注释掉可以减轻压力,提高性能
INSTALLED_APPS = [
    # 'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    # 'django.contrib.messages',
    # 'django.contrib.staticfiles',
    'app',
]

# 由于我们在使用post请求提交数据到后台的时候,django会有一个csrftoken验证,这样使用postman工具提交表单数据时就会失败,所以注释掉csrf中间件
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',
]


# 由于是测试,所以不再使用mysql,使用sqlite3比较方便
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# 设置为中文
LANGUAGE_CODE = 'zh-hans'

1.5 数据迁移

python manage.py makemigration
python manage.py migrate

1.6 编写视图代码

app/views.py:

import json
from .models import *
from django.views import View
from django.http import JsonResponse

"""
post /students/ 添加一个学生
GET  /students/ 获取所有学生信息

GET  /students/<pk>/获取一个学生信息
PUT  /students/<pk>/ 更新一个学生信息
DELETE /students/<pk>/ 删除一个学生信息

一个路由对应一个视图类,把5个api接口分为两个视图类来写
"""


# 原生接口
class studentView(View):
    def post(self, request):
        # 1.接受客户端提交的数据
        name = request.POST.get("name")
        sex = request.POST.get("sex")
        age = request.POST.get("age")
        classroom = request.POST.get("classroom")
        info = request.POST.get("info")

        # 2.操作数据库,保存数据
        instance = studentsInfo.objects.create(
            name=name,
            sex=sex,
            age=age,
            classroom=classroom,
            info=info
        )

        # 3.返回结果
        return JsonResponse({
            "id": instance.id,
            "name": instance.name,
            "sex": instance.sex,
            "age": instance.age,
            "classroom": instance.classroom,
            "info": instance.info
        }, status=201, json_dumps_params={"ensure_ascii": False})

    def get(self, request):
        """
        获取多个学生信息
        """
        students_list = studentsInfo.objects.values()
        return JsonResponse(data=list(students_list), status=200, safe=False, json_dumps_params={"ensure_ascii": False})


class studentInfoView(View):
    def get(self, request, pk):
        """
        获取一条数据
        """
        try:
            instance = studentsInfo.objects.get(id=pk)
        except studentsInfo.DoesNotExist:
            return JsonResponse(data={"message": "学生不存在"}, status=404)
        else:
            return JsonResponse({
                "id": instance.id,
                "name": instance.na
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇解决vscode在使用默认的autopep8.. 下一篇Python获取手机4K壁纸,一个入门..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目