Python 之 Django框架 - 纯数据接口篇

Python 之 Django框架 - 纯数据接口篇

上一篇我们介绍了django框架的基础内容,现在我们介绍如何用django框架来制作后端API接口,可连接数据库增删改查,供前端使用。

1.安装django

pip install Django

验证是否安装成功:
python -m django --version

2.创建django项目:

django-admin startproject 项目名称

创建完成后目录结构:
$ cd HelloWorld/ 
.
|-- HelloWorld 项目的容器
|   |-- __init__.py #一个空文件,告诉 Python 该目录是一个 Python 包
|   |-- asgi.py #一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目
|   |-- views.py  #添加的视图文件
|   |-- settings.py #该 Django 项目的设置/配置
|   |-- urls.py #该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
|   `-- wsgi.py #一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
`-- manage.py #一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。

启动django项目:
python manage.py runserver # 端口8000,被占用则无法启动

3.创建虚拟环境

在项目路径下输入cmd,并输入python -m venv venv创建虚拟环境,激活虚拟环境,再安装django模块。

pip install Django

4.创建APP

1.执行命令:

django-admin startapp 名称(app)

2.在settings.py 中找到INSTALLED_APPS添加app:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app.apps.AppConfig',               # 添加此项
)

5.数据接口API

1.删除views.py,在app目录下创建views目录:用来存储不同的数据接口。

2.比如创建关于用户user的接口,可在views目录下创建user.py:

from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt


@csrf_exempt  # 可以被跨域访问
def get_user_info(request):  
	# request 是调用数据接口前端传递过来的参数,可做其他逻辑处理
	post_data = json.loads(request.body)  
    
    # 获取用户信息
    user_data = dict()
    user_data ['name'] = '小明'
	
	# 返回数据,可供前端使用
    return JsonResponse(user_data , safe=False)

JsonResponse(data, safe=False)

data :

这是 JsonResponse 的主要参数,用于传递要转换为 JSON 的数据。这通常是一个字典或任何可以序列化为 JSON 的对象。

safe (默认为 True):

这个参数决定了是否应检查数据是否只包含基本数据类型(字典、列表、字符串、int、float、True、False 和 None)。
如果 safe 为 True,那么数据只能包含上述的基本数据类型。如果包含其他类型(如自定义类、Django 模型等),则会引发 TypeError。
如果 safe 为 False,则不会进行这种检查,允许您传递任何可以序列化为 JSON 的对象(但这仍然取决于对象的 json 方法或是否有合适的 JSON 编码器)。

3.在urls.py中引入访问接口路径:

通过本地或者服务器地址+user/info/,即可调用user下的get_user_info函数并返回用户信息,同理也可通过数据接口传参来修改用户信息并存储在数据库中。

from django.urls import path
from app.views import user # 引入user文件

urlpatterns = [
    path('user/info/',user.get_user_info)					
]

返回数据:

在这里插入图片描述

6.数据库获取和存储数据(mysql )

1.创建 MySQL 数据库:

ORM 无法操作到数据库级别,只能操作到数据表,所以需要手动创建个数据库先;我是用Navicat Premium新建连接,并创建helloworld本地Mysql数据库的,其他方式创建也行。

2.安装mysqlclient模块:

pip install mysqlclient

3.在 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:

DATABASES = { 
    'default': 
    { 
        'ENGINE': 'django.db.backends.mysql',    # 数据库引擎mysql,可连接其他数据库
        'NAME': 'helloworld', # 数据库名称
        'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1 
        'PORT': 3306, # 端口 
        'USER': 'root',  # 数据库用户名
        'PASSWORD': '123456', # 数据库密码
    }  
}

4.在app下的models.py中创建数据表:

from django.db import models

class User(models.Model): # 创建了user表里面有name字段来存储用户名字
    name = models.CharField(verbose_name="用户名", max_length=32)

具体的数据类型:Django models 常用数据类型

5.上传数据表和更新变动:

每次我们数据表有改动,都需要执行下面两条命令,我们就可以看到在本地数据库helloworld中新增了很多表,其中就有app_user用户表

python manage.py makemigrations 或 python manage.py makemigrations app

python manage.py migrate 或 python manage.py migrate app

在这里插入图片描述
6.数据表的增删改查:

from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt

from app import models
from django.db.models import Q
from django.db.models import F

@csrf_exempt
def get_user_info(request):
	# request 是调用数据接口前端传递过来的参数,可做其他逻辑处理
	post_data = json.loads(request.body)  

    # 新增create
    # models.User.objects.create(name='小明')

    # 获取全部all()或过滤条件filter
    # user_info = models.User.objects.values().all()
    # user_info = models.User.objects.filter(name='小王').values().first()

    # 更改update
    # models.User.objects.update(name='小红')
    # models.User.objects.filter(id=1).update(name='小明')

    # 删除delete
    # models.User.objects.delete()
    # models.User.objects.filter(id=1).delete()

    # Q 或
    # models.Classes.objects.values().filter(
    #     Q(id__gte=3) | Q(name='nick'))  # select * from classes where id>=3 or name='nick'
    # models.Classes.objects.values().filter(
    #     (Q(id__gte=3) | Q(name='nick')) & Q(age=19))  # select * from classes where (id>=3 or name='nick') and age=19
    
    # F 当前的值
    # models.Classes.objects.update(age=F('age') + 1)  # 将每个人的年龄加1

    return JsonResponse('成功', safe=False)

比如调用models.User.objects.create(name=‘小明’)去创建对应数据:

在这里插入图片描述
具体的数据库查询方式:Python+django的ORM查询

至此,完整的django后端纯数据接口流程如上(简洁),前端请求格式如:http://127.0.0.1:8000/user/info/,地址+接口名称,下一篇 Python 之 Django框架 - 后台管理篇,我们将讲解连接数据库后,如何使用admin后台去可视化管理数据表中的数据!

  • 34
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值